Macros/Draw/001/it

Contesto
Vogliamo essere in grado di mostrare o nascondere gli oggetti facendo clic su un pulsante.

La schermata seguente mostra un esempio in cui facendo clic sui pulsanti "Quadrati" o "Cerchi" vengono visualizzati o nascosti i rispettivi oggetti.



Realizzazione
LibreOffice Draw consente la definizione di livelli in una determinata pagina di disegno. L'uso dei livelli ci consente di accedere a oggetti esclusivi di un determinato livello. Pensate ai livelli come diverse aree di lavoro disponibili che potete gestire individualmente, come la loro visibilità o se devono essere bloccati od omessi durante la stampa, ecc. Per impostazione predefinita, Draw propone tre livelli (che possono essere visualizzati nella barra degli strumenti inferiore dell'interfaccia ):
 * Disposizione
 * Controlli
 * Linee di quotatura

Creeremo altri due livelli manualmente per poter gestire gli oggetti per livello:
 * I quadrati verranno creati nel livello chiamato Quadrati.
 * I cerchi verranno creati nel livello chiamato Cerchi.

Ogni livello ha una proprietà booleana chiamata IsVisible. La macro seguente alterna questa proprietà tra True e False.

Una macro univoca viene attivata dall'evento Esegui azione per ciascun pulsante. La variabile oEvent viene passata come argomento alla macro che viene eseguita quando si fa clic sul pulsante. Questo può essere impostato creando un Push Button e fate clic con il pulsante destro del mouse e selezionate Control Properties, e infine in Events è possibile selezionare una macro per l'elemento Execute action.

Da questo possiamo tracciare la proprietà Label del pulsante e trovare un ciclo attraverso il livello per vedere se troviamo un oggetto con lo stesso nome. Un'altra opzione è usare la proprietà Tag per memorizzare il nome del livello in questione.

Il codice prevede anche un possibile errore verificando che il documento abbia realmente un layer con quel nome, indagando sulla proprietà hasByName.

Codice
In LibreOffice Basic:

Esempio di file ODG

 * [[Media:Example macro for manipulating object properties by layer.odg|Scarica il file ODG di esempio con questa macro inclusa]]

Note

 * Si veda Documentazione API per il servizio com.sun.star. drawing.LayerManager.