Difference between revisions of "IT/Documentation/OOo3 User Guides/Getting Started/Creating a simple macro"

From Apache OpenOffice Wiki
Jump to: navigation, search
Line 120: Line 120:
 
La maggior parte dei compiti in OpenOffice.org sono eseguiti dall'invocazione di un comando. La versione 2.0 di OOo introduce il servizio dispatch helper, il quale esegue la maggior parte del lavoro necessario per utilizzare le esecuzioni delle macro. Il metodo CreateUnoService accetta come argomento il nome di un servizio, e cerca di crearne un'istanza. Per finire, la variabile dispatcher contiene un riferimento a DispatchHelper.
 
La maggior parte dei compiti in OpenOffice.org sono eseguiti dall'invocazione di un comando. La versione 2.0 di OOo introduce il servizio dispatch helper, il quale esegue la maggior parte del lavoro necessario per utilizzare le esecuzioni delle macro. Il metodo CreateUnoService accetta come argomento il nome di un servizio, e cerca di crearne un'istanza. Per finire, la variabile dispatcher contiene un riferimento a DispatchHelper.
  
dispatcher <nowiki>=</nowiki> createUnoService("com.sun.star.frame.DispatchHelper")
+
:<tt>dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")</tt>
  
 
Dichiarazione di un vettore di proprietà. Ogni proprietà ha un nome e un valore. In altre parole, è una coppia nome/valore. Il vettore creato ha una proprietà nella posizione zero.
 
Dichiarazione di un vettore di proprietà. Ogni proprietà ha un nome e un valore. In altre parole, è una coppia nome/valore. Il vettore creato ha una proprietà nella posizione zero.
 
 
 
 
 
 
 
 
 
 
 
 
dim args1(0) as new com.sun.star.beans.PropertyValue
 
 
Date alla proprietà il nome “Text” e create come valore “Andrew Pitonyak”, che è il testo che verrà inserito quando verrà eseguita la macro.
 
 
args1(0).Name <nowiki>=</nowiki> "Text"
 
args1(0).Value <nowiki>=</nowiki> "Andrew Pitonyak"
 
 
Qui è dove avviene la magia. Il dispatch helper manda una richiesta al contenitore del documento (memorizzato nella variabile denominata document) mediante l'utilizzo del comando .uno:InsertText. I due argomenti successivi, ''frame name'' e ''search flags'', vanno al di là dello scopo di questo documento. L'ultimo argomento è il vettore di proprietà che verrà utilizzato durante l'esecuzione del comando InsertText.
 
 
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
 
 
Finalmente, si arriva alla fine della subroutine.
 
 
end sub
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
:<tt>dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")</tt>
 
 
Declare an array of properties. Each property has a name and a value. In other words, it is a name/value pair. The created array has one property at index zero.
 
  
 
:<tt>dim args1(0) as new com.sun.star.beans.PropertyValue</tt>
 
:<tt>dim args1(0) as new com.sun.star.beans.PropertyValue</tt>
  
Give the property the name "Text" and the value "Andrew Pitonyak", which is the text that is inserted when the macro is run.
+
Date alla proprietà il nome "Text" e create come valore "Andrew Pitonyak", che è il testo che verrà inserito quando verrà eseguita la macro.
  
 
:<tt>args1(0).Name = "Text"</tt>
 
:<tt>args1(0).Name = "Text"</tt>
 
:<tt>args1(0).Value = "Andrew Pitonyak"</tt>
 
:<tt>args1(0).Value = "Andrew Pitonyak"</tt>
  
This is where the magic happens. The dispatch helper sends a dispatch to the document's frame (stored in the variable named document) with the command <tt>.uno:InsertText>/tt>. The next two arguments, ''frame name'' and ''search flags'', are beyond the scope of this document. The last argument is the array of property values to be used while executing the command InsertText.
+
Qui è dove avviene la magia. Il dispatch helper manda una richiesta al contenitore del documento (memorizzato nella variabile denominata document) mediante l'utilizzo del comando <tt>.uno:InsertText</tt>. I due argomenti successivi, ''frame name'' e ''search flags'', vanno al di là dello scopo di questo documento. L'ultimo argomento è il vettore dei valori proprietà che verrà utilizzato durante l'esecuzione del comando InsertText.
  
 
:<tt>dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())</tt>
 
:<tt>dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())</tt>
  
Finally, the end of the subroutine.
+
Finalmente, si arriva alla fine della subroutine.
  
 
:<tt>end sub</tt>
 
:<tt>end sub</tt>
 +
  
 
{{Manual}}
 
{{Manual}}
 
[[Category:Getting Started (Documentation)]]
 
[[Category:Getting Started (Documentation)]]

Revision as of 11:43, 13 July 2010






Traduzione in corso - translation in progress




Supponete di dover inserire ripetutamente sempre le stesse informazioni. Sebbene sia possibile memorizzare le informazioni negli appunti, se questi nel frattempo vengono utilizzati, il loro contenuto cambia. Una semplice soluzione consiste nel memorizzare i dati in una macro (in alcuni semplici casi, come l'esempio utilizzato in questa sede, una soluzione migliore consiste nell'utilizzo del completamento automatico).

  1. Fate clic su Strumenti > Macro > Registra Macro per cominciare la registrazione di una macro. Comparirà una piccola finestra, per far sapere che OpenOffice.org sta registrando.
  2. Macro termina reg it.png

  3. Digitate l'informazione desiderata, o eseguite la serie di operazioni desiderata. In questo caso, ho digitato il mio nome, Andrew Pitonyak.
  4. Fate clic sul pulsante Termina registrazione per interrompere la registrazione, salvate la macro, e visualizzate la finestra di dialogo Macro OpenOffice.org Basic (vedi sotto).
  5. Finestra di dialogo OOo Macro Organizer, con la libreria DBInspection selezionata.
  6. Assicuratevi di selezionare la cartella di libreria denominata Macro personali. Cercate la libreria denominata Standard all'interno di Macro personali. Notate che tutte le cartelle di libreria hanno una libreria denominata Standard. Selezionate la libreria standard e fate clic su Nuovo modulo per creare un nuovo modulo che conterrà la macro.
  7. Il nome predefinito del modulo è Module1; scegliete un nome appropriato. Sebbene non sia ancora descrittivo, ho utilizzato il nome Registrato. Digitate un nome descrittivo e fate clic su OK per creare il modulo. Verrà visualizzata nuovamente la finestra di dialogo Macro Openoffice.org Basic, mostrando il nuovo modulo.
  8. Selezionate il modulo appena creato. Nella casella di testo in alto a sinistra, digitate il nome della macro, come "InserisciMioNome", e dopo fate clic su Registra per salvare la macro.
  9. Dare al modulo un nome descrittivo

Se avete eseguito tutti i passi correttamente, la libreria Standard adesso conterrà un modulo chiamato Registrato, che contiene la macro InserisciMioNome, come mostrato sotto. OOo, quando crea un nuovo modulo, aggiunge automaticamente la macro Main.

Esecuzione di una macro

Fate clic su Strumenti > Macro > Esegui Macro per aprire la finestra di selezione della macro. Selezionate la macro appena creata e fate clic su Esegui.

Selezionate la vostra macro e fate clic su Esegui.

Ci sono altri metodi per eseguire una macro. Per esempio, potete fare clic su Strumenti > Macro > Organizza Macro > OpenOffice.org Basic per aprire la finestra di gestione delle macro, la quale contiene il pulsante Esegui come nel caso precedente. L'autore, uno scrittore avanzato di macro, preferisce il gestore di macro perché la finestra di dialogo di solito appare più velocemente, ma il processo di selezione può essere più lento.

Visualizzazione e modifica della macro

Potete visualizzare e modificare la macro che avete appena creato. Fate clic su Strumenti > Macro > Organizza Macro > OpenOffice.org Basic per aprire la finestra di dialogo Macro OpenOffice.org Basic Macro. Selezionate la nuova macro e fate clic su Modifica per aprire la macro nell'IDE (Integrated Development Environment, Ambiente di Sviluppo Integrato) di Basic.

Listato 1: La macro "InserisciMioNome"” creata.

 REM  *****  BASIC  *****
 Sub Main
 
 End Sub
 
 sub InserisciMioNome
 rem ---------------------------------------------------------------
 rem definizione variabili
 dim document   as object
 dim dispatcher as object
 rem ---------------------------------------------------------------
 rem accesso al documento
 document   = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
 rem ---------------------------------------------------------------
 dim args1(0) as new com.sun.star.beans.PropertyValue
 args1(0).Name = "Text"
 args1(0).Value = "Andrew Pitonyak"
 
 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
 end sub

La macro del Listato 1 è più semplice di come compare a prima vista. Per capire meglio la macro generata sono necessarie solo alcune nozioni. La spiegazione comincia con la descrizione degli elementi della macro che sono presenti all'inizio del listato. Se preferite saltare questi dettagli, allora basta cambiare il testo “Andrew Pitonyak” con quello che volete inserire nella posizione corrente del cursore all'interno del documento.

I commenti cominciano con REM

La parola chiave REM, abbreviazione di remark, si trova all'inizio di una riga di commento. Tutto il testo che segue REM (nella stessa riga) viene ignorato. Si può utilizzare come scorciatoia anche il carattere di apice singolo ' per scrivere un commento.

Template:Documentation/Tip

Definizione delle subroutine con SUB

Le singole macro sono memorizzate in subroutine tramite la parola chiave SUB. La fine di una subroutine è indicata dalle parole chiave END SUB. Il codice comincia dalla definizione di una subroutine denominata Main, che è vuota e non fa niente. La subroutine seguente, InserisciMioNome, contiene il codice generato.

Template:Documentation/Tip

Questi sono argomenti avanzati che vanno al di là degli scopi di questo documento, ma la loro conoscenza potrebbe essere utile:

  • Potete scrivere una macro in maniera tale da poter passare dei valori alla subroutine. Questi valori sono chiamati argomenti. Le macro registrate non accettano argomenti.
  • Un altro tipo di subroutine è la funzione. Una funzione è una subroutine che restituisce un valore. Per definire una funzione si utilizza la parola chiave FUNCTION al posto di SUB. Le macro generate cominciano sempre con la parola chiave SUB.

Definizione delle variabili mediante l'utilizzo di DIM

Potete scrivere le informazioni sopra un foglio, per riutilizzarle in seguito. Una variabile, come un foglio, contiene informazioni che possono essere lette e modificate. Utilizzare il costrutto DIM è come preparare un foglio che verrà utilizzato per memorizzare dei messaggi o degli appunti.

La macro InserisciMioNome definisce le variabili document e dispatcher di tipo object. Altri tipi di variabili comunemente utilizzati sono string, integer, e date. Una terza variabile, denominata args1, è un vettore di valori. Una variabile di tipo array permette ad una singola variabile di contenere più valori, in maniera simile ad avere molte pagine per un solo libro. I valori in un vettore sono solitamente numerati a partire da zero. Il numero racchiuso dalle parentesi indica il numero più elevato utilizzabile per accedere ad una locazione di memoria. In questo esempio c'è solo un valore e il suo indice è zero.

Assemblare più macro

L'argomento seguente è molto dettagliato, non è necessario comprenderlo a fondo. La prima riga definisce l'inizio della macro.

sub InserisciMioNome

Qui vengono dichiarate due variabili:

dim document as object
dim dispatcher as object

ThisComponent fa riferimento al documento corrente.

La proprietà CurrentController di un documento si riferisce al servizio che “controlla” il documento stesso. Per esempio, quando scrivete qualcosa, è questo il controller che viene attivato. Il controller corrente poi abilita i cambiamenti nella finestra del documento.

La proprietà Frame di un controller restituisce il contenitore principale del documento. Inoltre, la variabile denominata document fa riferimento alla contenitore del documento stesso, che riceve i comandi da eseguire.

document = ThisComponent.CurrentController.Frame

La maggior parte dei compiti in OpenOffice.org sono eseguiti dall'invocazione di un comando. La versione 2.0 di OOo introduce il servizio dispatch helper, il quale esegue la maggior parte del lavoro necessario per utilizzare le esecuzioni delle macro. Il metodo CreateUnoService accetta come argomento il nome di un servizio, e cerca di crearne un'istanza. Per finire, la variabile dispatcher contiene un riferimento a DispatchHelper.

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Dichiarazione di un vettore di proprietà. Ogni proprietà ha un nome e un valore. In altre parole, è una coppia nome/valore. Il vettore creato ha una proprietà nella posizione zero.

dim args1(0) as new com.sun.star.beans.PropertyValue

Date alla proprietà il nome "Text" e create come valore "Andrew Pitonyak", che è il testo che verrà inserito quando verrà eseguita la macro.

args1(0).Name = "Text"
args1(0).Value = "Andrew Pitonyak"

Qui è dove avviene la magia. Il dispatch helper manda una richiesta al contenitore del documento (memorizzato nella variabile denominata document) mediante l'utilizzo del comando .uno:InsertText. I due argomenti successivi, frame name e search flags, vanno al di là dello scopo di questo documento. L'ultimo argomento è il vettore dei valori proprietà che verrà utilizzato durante l'esecuzione del comando InsertText.

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

Finalmente, si arriva alla fine della subroutine.

end sub


Content on this page is licensed under the Creative Common Attribution 3.0 license (CC-BY).
Personal tools