Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Fcm/Edizione/GruppoC5"
Differenze tra le versioni 19 e 84 (in 65 versioni)
Versione 19 del 25/02/2011 21.50.49
Dimensione: 12397
Commento:
Versione 84 del 10/02/2013 19.20.27
Dimensione: 10230
Autore: mapreri
Commento: ready for #70
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
#acl GruppoAdmin:admin,read,write,revert GruppoEditori:read,write,revert GruppoFcm:read,write,revert -All:read -Known:read
[[Include(Fcm/Header)]]
#acl GruppoAdmin:admin,read,write,revert GruppoOperatori:admin,read,write,revert GruppoEditori:read,write,revert GruppoFcm:read,write,revert palombo:admin,read,write,revert new.life:admin,read,write,revert paolettopn:admin,read,write,revert Known:read All:read
Linea 4: Linea 3:
== HowTo6 == <<Include(Fcm/Header)>>
= Testo inglese =
Linea 6: Linea 6:
=== Traduzione italiana ===
HOW-TO
Scritto da Lucas Westermann
LibreOffice Part 23: Base Form Enhancements with Macros
Linea 10: Linea 8:
Virtualizzazione Parte 2 – Fedora 13 by Elmer Perry
Linea 12: Linea 10:
Prima di iniziare, a beneficio di chiunque possa incorrere negli stessi problemi, devo citare un lettore di nome Martin che
è stato così gentile da informarmi di essere incappato in alcuni problemi con i dispositivi USB in una macchina virtuale
Windows XP, che sono stati risolti soltanto dopo aver installato i driver USB mediante l'Hardware Manager di XP.
For the previous four parts of this series, we have slowly built a database document using LibreOffice's Base module. We have a database with forms to enter our data, and queries and reports for extracting the data. We now have a usable document for recording our book library. However, our current design has one flaw we need to overcome. If we need to enter a new author or media type while we are in the books form, we have to close the book form and open one of the others. If we could enter new authors and media types directly from the books form, it would behave more like an application and make data entry even easier. We can accomplish this through a few short macros.
The LibreOffice Basic language is very similar to other Basic languages, such as Visual Basic for Applications. To manipulate the underlying LibreOffice document, we access the Uno framework controlling the document. The Uno framework is quite complex, but I will explain, as best I can, the properties and objects we will use. The goal is not to teach you how to write LibreOffice macros, but how you can use them.
Macro Security and Options
Linea 16: Linea 14:
Dopo aver parlato nel numero precedente della creazione delle macchine virtuali, ho compreso che potremmo cominciare con
l'installazione di una distribuzione Linux diversa (utilizza il package manager di Red Hat), ma poi non così diversa, da Ubuntu.
In particolare, vorrei iniziare con Fedora Core 13. Potete effettuare il download della versione più recente (la 13) qui:
http://fedoraproject.org/en/get-fedora. Sia che prendiate l'immagine ISO a 32-bit (i686) oppure quella a 64-bit, la procedura
da seguire è la stessa. Naturalmente la “distribuzione Linux” che scegliete nell'elenco del menu a discesa della Macchina Virtuale
deve essere la stessa che avete prelevato. Fate attenzione al fatto che se il vostro sistema non è compatibile con i sistemi
a 64 bit (e non è in grado di far girare un Sistema Operativo a 64 bit), allora non potete eseguire una Macchina Virtuale a 64 bit.
E' possibile che Oracle abbia attivato l'emulazione di sistemi a 64 bit anche per gli host a 32 bit, ma personalmente non la
ritengo una cosa certa, dal momento che tutti i miei sistemi operativi sono a 64 bit. Detto a chiare lettere: VirtualBox potrebbe
consentirvi di eseguire una Macchina Virtuale a 64 bit da un Sistema Operativo a 32 bit (cioè l'host), ma è altamente improbabile.
Per tutti quelli che come me hanno un archivio con tutte le immagini ISO a 32 e a 64 bit delle due ultime versioni di ogni
distribuzione Linux e Unix che hanno potuto trovare, procedete senza indugi e scaricate un'immagine ISO di Fedora.
While macros allow us to do cool things in our documents, they can also cause problems. Some people use macros to compromise other people's systems, therefore, we need to take a few minutes to talk about macro security. Whether you are running LibreOffice on Linux, Mac, or Windows, malicious code in a macro can compromise your data and possibly your entire system.
Linea 29: Linea 16:
Passo 1: Macro security in LibreOffice is simple. Tools > Options opens the Options dialog for LibreOffice. Under LibreOffice, select Security. Click on the Macro Security button to pop up the macro security options. You have four options. Never use the Low security option – it will run macros without asking you. I recommend the Medium security level. With this level, you are prompted whether to run the macros when you open a document containing macros. The High and Very High options require a certificate or folder you designate as trusted. While this is great, I believe nothing trumps the instincts of the user. You usually know whether you were expecting a document to contain macros. When in doubt, click No. Click OK to save your choice and OK to close the options dialog.
Now, on to the fun stuff.
The Macros
Linea 31: Linea 20:
Dopo aver prelevato l'immagine ISO dovete creare la Macchina Virtuale sulla quale volete installarla. Quando inizializzate una
Macchina Virtuale per la prima volta, vi troverete davanti la Procedura di Creazione di una Nuova Macchiva Virtuale (vedi Fig. 1)
a meno che non stiate riutilizzando un disco virtuale creato in precedenza. Nella procedura guidata dovrete premere il pulsante
“Avanti” e fare click sull'icona a forma di cartella che riporta una freccia verde per aprire il Virtual Media Manager (Fig. 2),
in cui potete aggiungere l'immagine ISO (Fig. 3).
We will write four macros for our database document. Three will deal with opening forms, and the last will update the list boxes for authors and media types. The general idea behind macros is to accomplish tasks that are not built into the program, or to simplify complex tasks. Our macros really accomplish both, as we will simplify the tasks of adding authors and media types and provide functionality not built into the program.
Before we can begin to write our macros, we need a container to hold them. Macros are contained in a module. Modules can live in the program itself or within a document. Since our macros are specific to our database file, we will embed them in the document. Macros embedded in a document are available only when the document is loaded. Macros contained in the program are available as long as the program is running.
Tools > Macros > Organize Macros > LibreOffice Basic. The LibreOffice Basic Macros dialog pops up. Select book.odb from the Macro from-list. Click the New button. A dialog pops up asking you for a name for the module. Name it FormCalls. Click OK. This brings up the LibreOffice macro editor. The macro comes with a default main subroutine. We will not use this subroutine. Highlight Sub main and End Sub and press the backspace key to delete them.
Our first macro is a generalized subroutine for opening a form. A generalized subroutine is written for reuse. We will call this routine twice from other routines we write. Type this subroutine into the editor:
{{{
Sub OpenAForm (FormName as String)
 Dim GetForm as Object
 GetForm = ThisDatabaseDocument.FormDocuments.GetByName(FormName)
 GetForm.Open
End Sub
}}}
The first line of the subroutine is called the signature. The signature determines how the subroutine is called. A signature starts with the keyword Sub, which defines this call as a subroutine. Next, the name of the subroutine. In our case, OpenAForm is the name of the subroutine. Finally in the parenthesis, we have the arguments used when calling this subroutine. In our case, we have a variable named FormName which is a type String. In the second line of the subroutine, Dim is another keyword. Dim initializes a variable as a type, and, optionally, a value. We define a variable named GetForm as a type Object. The third line assigns a value to the variable GetForm through a chain of commands in the Uno framework. ThisDatabaseDocument refers to the currently open database document. In our case, book.odb. FormDocuments is a collection of all the forms in the document. Finally, GetByName retrieves a specific form object from the collection. Notice, we pass the variable FormName from the signature to this method. Once the call is complete, the variable GetForm is the object of the form name passed to the subroutine. The fourth line calls the Open method of the form. On the fifth line, we tell Basic this is the end of the subroutine with the command End Sub.
We will call the OpenAform subroutine twice. Once to open the authors form, and once to open the media form. Add these two subroutines to your editor:
{{{
Sub OpenAuthorsForm(oEv As Object)
 OpenAForm("Authors")
End Sub
Linea 37: Linea 38:
Passo 2: Sub OpenMediaForm(oEv As Object)
 OpenAForm("Media")
End Sub
}}}
The signature on these two subroutines are a little different. Since we will call them from a control within a form, we need to pass the object making the call as an argument, even though we do not use it. The argument oEv is a reference to the object making the call. We will use this to our advantage later, in the last subroutine, but here we do it because it is required. These two subroutines are pretty simple. We just make a call to OpenAForm passing the name of the form we want to open, Authors or Media.
The final subroutine deals with our problem of refreshing the data in the list boxes for authors and media when we add authors or media using the two subroutines above:
{{{
Sub ListRefresh(oEv as Object)
 oEv.source.model.Refresh
End Sub
}}}
Once again, since we will call this subroutine from a control, we need a reference to the control making the call. However, this time we will actually use the object. This subroutine makes a method call to the underlying model of the list box and refreshes the data in the list, thus updating our list of authors or media types.
Save your module and close the Basic editor.
Linea 39: Linea 52:
Dopo aver connesso l'immagine ISO con la Macchina Virtuale, questa dovrebbe partire effettuando il boot e mostrarvi la schermata
di presentazione del BIOS Oracle VM (o la più vecchia schermata BIOS VirtualBox), come in Fig. 4. Subito dopo dovrebbe apparire
il menu Grub di Fedora (Fig. 5) e infine la Finestra di Login. Ho anche configurato la tastiera giusta e selezionato l'utente con
login automatico. Per poter accedere basta premere il pulsante “Accedi”.
Making Connections to Macros
Linea 44: Linea 54:
Passo 3: At this point, our macros do nothing. We need to connect them to objects in our form to activate them when needed. First, we will connect the open form subroutines to buttons in our form, and then we will connect the ListRefresh to the list boxes.
In the database pane, click on Forms. Right-click the Books form and select edit. Add two push buttons to the form, one under the Authors table and another under the Media table. Right-click the button under the Authors table and select Control to bring up the buttons properties dialog. On the General tab, change the name to AddAuthors and the Label to Add Authors. On the Events tab, click the ellipses (…) button next to Execute Action – which brings up the Assign Action dialog. Click the Macro button to bring up the Macro Selector dialog. In the tree list under Library, select book.odb > Standard > FormCalls. Select OpenAuthorsForm from the Macro Name list and click OK. Click OK to close the Assign Action dialog. Close the buttons properties dialog.
Do the same with the button under the Media table, only name it AddMedia, make the label Add Media Type, and assign the macro OpenMediaForm to the Execute Action event.
Finally, we need to add the refresh subroutine to our list boxes. Right-click the Authors column in the authors table and select Column. On the Events tab, click the ellipse (…) button beside “When receiving focus”. In the Assign Action button, use the Macro button to assign the ListRefresh macro to the action. This will cause the list to update data from the Authors table when you click on a list box in the column.
Do the same for the Media column in the media table.
Save your changes to the Books form and close it.
Linea 46: Linea 61:
Quando il desktop avrù terminato il caricamento potrete lanciare l'applicazione “Installazione su Disco” (Figure 7 e 8). Procedete
con la schermata di selezione della tastiera, dove potete scegliere il layout corretto (Fig. 9). Dopo averlo scelto vi verrà proposta
la scelta fra “Dispositivi di Archiviazione di Base” e “Dispositivi di Archiviazione Specializzati”. Selezionate l'opzione
“Dispositivi di Archivazione di Base” (Fig. 10).
Testing Your Changes
Linea 51: Linea 63:
Passo 4: Any time we make changes to our forms, we will want to test them and make sure we got everything right, especially in cases where we have used macros. One simple typo could cause things to not work. Double-click the Books form to open it. Add a new book with an author and media type you have not added already. Click the Add Authors button to make sure it opens the form. Add some authors. Close the Authors form. Click on the authors dropdown list box and verify that the authors you added are there. Do the same test with the Add Media Type button and listbox.
Final Thoughts and References
Linea 53: Linea 66:
Ora vi verrà chiesto di scegliere il disco rigido sul quale effettuare l'installazione. Ce ne dovrebbe essere soltanto uno
disponibile (il drive Vbox). Selezionatelo e quando l'applicazione vi chiederà di formattare il disco, confermate la scelta (il
disco sarà vuoto se avete appena creato la macchina virtuale). Confrontate con le figure 11 e 12.
Again, I would like to emphasize that writing macros in LibreOffice Basic is complex. Documentation is pretty sparse, but it is out there. If you are interested in taking up the challenge, here are some references to get you started:
LibreOffice Basic Guide: http://wiki.documentfoundation.org/images/d/dd/BasicGuide_OOo3.2.0.odt
Andrew Pitonyak's OpenOffice Macro Information: http://www.pitonyak.org/oo.php
You can find the macros used in this How-To on pastebin.com at http://pastebin.com/MU2Ztizi
Next time, we will move on to another part of the LibreOffice suite and explore the Math module.
Linea 57: Linea 72:
Passo 5: = Traduzione italiana =
Linea 59: Linea 74:
Nei successivi 3 passi dell'installazione scegliete liberamente il nome host che più vi piace, selezionate il fuso orario corretto
e inserite la vostra password di root.

Passo 6:

Apparirà poi una finestra in cui dovrete scegliere quale schema di partizionamento del disco dovrà essere utilizzato dal programma
di installazione (vedi Fig. 13). Nelle macchine virtuali di solito scelgo di usare l'intero disco, a meno che non stia progettando
di installare lo stesso OS su un PC fisico e abbia deciso di testarlo prima su una macchina virtuale. Sta a voi decidere se utilizzare
una delle altre opzioni. Confermate la vostra decisione con “scrivi su disco”. Quando richiesto, assicuratevi di selezionare “installa
sul Master Boot Record” per Grub, in modo da poter effettuare il boot correttamente.

Chiudete il programma d'installazione, fare ripartire la macchina virtuale e andate su Dispositivi > Dispositivi CD/DVD e selezionate
“Smonta dispositivi CD/DVD” per poter effettuare il boot dal disco virtuale invece che di nuovo dall'immagine ISO.

Spero che questa sia stata una guida chiara per coloro che effettuano l'installazione di Fedora per la prima volta. Nei prossimi numeri
prevedo di parlare dell'installazione di OpenSolaris, FreeBSD, Ubuntu Server e ArchLinux. Sono in ogni caso più che felice di trattare
l'installazione su macchina virtuale della maggior parte dei sistemi Unix o Linux e di Windows XP/Windows 7. Se avete delle richieste
scrivetemi all'indirizzo lswest34@gmail.com mettendo come oggetto del messaggio “Virtualization Series” oppure “FCM Virtualization”.
== Note alla traduzione ==
Linea 79: Linea 77:
Lucas ha imparato tutto ciò che sa distruggendo ripetutamente il suo sistema, avendo poi nessun'altra alternativa che scoprire come
ripararlo. Potete inviare un'email a Lucas all'indirizzo: lswest34@gmail.com.

==== Note alla traduzione ====
- come nell'art. How-To parte 1 di questo articolo apparso sul n. 38 di FCM, sono state tradotte in italiano anche le etichette dei pulsanti e delle finestre citate nell'articolo (come ad es. "Avanti" per "Next", "Procedura automatica di creazione di una macchina virtuale" per "First Run Wizard", ecc.) anche se le figure sono tratte dalla versione inglese
- la traduzione in italiano delle etichette è tratta dalla versione di VirtualBox in mio possesso (versione 4.0.2)
= Revisione =
Linea 87: Linea 80:
=== Revisione ===
HOW-TO
Scritto da Lucas Westermann

Virtualizzazione Parte 2 – Fedora 13

Prima di iniziare, a beneficio di chiunque possa incorrere negli stessi problemi, devo citare un lettore di nome Martin che
è stato così gentile da informarmi di essere incappato in alcuni problemi con i dispositivi USB in una macchina virtuale
Windows XP, che sono stati risolti soltanto dopo aver installato i driver USB mediante l'Hardware Manager di XP.

Dopo aver parlato nel numero precedente della creazione delle macchine virtuali, ho compreso che potremmo cominciare con
l'installazione di una distribuzione Linux diversa (utilizza il package manager di Red Hat), ma poi non così diversa, da Ubuntu.
In particolare, vorrei iniziare con Fedora Core 13. Potete effettuare il download della versione più recente (la 13) qui:
http://fedoraproject.org/en/get-fedora. Sia che prendiate l'immagine ISO a 32-bit (i686) oppure quella a 64-bit, la procedura
da seguire è la stessa. Naturalmente la “distribuzione Linux” che scegliete nell'elenco del menu a discesa della Macchina Virtuale
deve essere la stessa che avete prelevato. Fate attenzione al fatto che se il vostro sistema non è compatibile con i sistemi
a 64 bit (e non è in grado di far girare un Sistema Operativo a 64 bit), allora non potete eseguire una Macchina Virtuale a 64 bit.
E' possibile che Oracle abbia attivato l'emulazione di sistemi a 64 bit anche per gli host a 32 bit, ma personalmente non la
ritengo una cosa certa, dal momento che tutti i miei sistemi operativi sono a 64 bit. Detto a chiare lettere: VirtualBox potrebbe
consentirvi di eseguire una Macchina Virtuale a 64 bit da un Sistema Operativo a 32 bit (cioè l'host), ma è altamente improbabile.
Per tutti quelli che come me hanno un archivio con tutte le immagini ISO a 32 e a 64 bit delle due ultime versioni di ogni
distribuzione Linux e Unix che hanno potuto trovare, procedete senza indugi e scaricate un'immagine ISO di Fedora.

Passo 1:

Dopo aver prelevato l'immagine ISO dovete creare la Macchina Virtuale sulla quale volete installarla. Quando inizializzate una
Macchina Virtuale per la prima volta, vi troverete davanti la Procedura di Creazione di una Nuova Macchiva Virtuale (vedi Fig. 1)
a meno che non stiate riutilizzando un disco virtuale creato in precedenza. Nella procedura guidata dovrete premere il pulsante
“Avanti” e fare click sull'icona a forma di cartella che riporta una freccia verde per aprire il Virtual Media Manager (Fig. 2),
in cui potete aggiungere l'immagine ISO (Fig. 3).

Passo 2:

Dopo aver connesso l'immagine ISO con la Macchina Virtuale, questa dovrebbe partire effettuando il boot e mostrarvi la schermata
di presentazione del BIOS Oracle VM (o la più vecchia schermata BIOS VirtualBox), come in Fig. 4. Subito dopo dovrebbe apparire
il menu Grub di Fedora (Fig. 5) e infine la Finestra di Login. Ho anche configurato la tastiera giusta e selezionato l'utente con
login automatico. Per poter accedere basta premere il pulsante “Accedi”.

Passo 3:

Quando il desktop avrù terminato il caricamento potrete lanciare l'applicazione “Installazione su Disco” (Figure 7 e 8). Procedete
con la schermata di selezione della tastiera, dove potete scegliere il layout corretto (Fig. 9). Dopo averlo scelto vi verrà proposta
la scelta fra “Dispositivi di Archiviazione di Base” e “Dispositivi di Archiviazione Specializzati”. Selezionate l'opzione
“Dispositivi di Archivazione di Base” (Fig. 10).

Passo 4:

Ora vi verrà chiesto di scegliere il disco rigido sul quale effettuare l'installazione. Ce ne dovrebbe essere soltanto uno
disponibile (il drive Vbox). Selezionatelo e quando l'applicazione vi chiederà di formattare il disco, confermate la scelta (il
disco sarà vuoto se avete appena creato la macchina virtuale). Confrontate con le figure 11 e 12.

Passo 5:

Nei successivi 3 passi dell'installazione scegliete liberamente il nome host che più vi piace, selezionate il fuso orario corretto
e inserite la vostra password di root.

Passo 6:

Apparirà poi una finestra in cui dovrete scegliere quale schema di partizionamento del disco dovrà essere utilizzato dal programma
di installazione (vedi Fig. 13). Nelle macchine virtuali di solito scelgo di usare l'intero disco, a meno che non stia progettando
di installare lo stesso OS su un PC fisico e abbia deciso di testarlo prima su una macchina virtuale. Sta a voi decidere se utilizzare
una delle altre opzioni. Confermate la vostra decisione con “scrivi su disco”. Quando richiesto, assicuratevi di selezionare “installa
sul Master Boot Record” per Grub, in modo da poter effettuare il boot correttamente.

Chiudete il programma d'installazione, fare ripartire la macchina virtuale e andate su Dispositivi > Dispositivi CD/DVD e selezionate
“Smonta dispositivi CD/DVD” per poter effettuare il boot dal disco virtuale invece che di nuovo dall'immagine ISO.

Spero che questa sia stata una guida chiara per coloro che effettuano l'installazione di Fedora per la prima volta. Nei prossimi numeri
prevedo di parlare dell'installazione di OpenSolaris, FreeBSD, Ubuntu Server e ArchLinux. Sono in ogni caso più che felice di trattare
l'installazione su macchina virtuale della maggior parte dei sistemi Unix o Linux e di Windows XP/Windows 7. Se avete delle richieste
scrivetemi all'indirizzo lswest34@gmail.com mettendo come oggetto del messaggio “Virtualization Series” oppure “FCM Virtualization”.
== Note alla revisione ==
Linea 160: Linea 83:
Lucas ha imparato tutto ciò che sa distruggendo ripetutamente il suo sistema, avendo poi nessun'altra alternativa che scoprire come
ripararlo. Potete inviare un'email a Lucas all'indirizzo: lswest34@gmail.com.
= Errata Corrige =
Linea 163: Linea 85:
==== Note alla revisione ====



=== Errata Corrige ===

Testo inglese

LibreOffice Part 23: Base Form Enhancements with Macros

by Elmer Perry

For the previous four parts of this series, we have slowly built a database document using LibreOffice's Base module. We have a database with forms to enter our data, and queries and reports for extracting the data. We now have a usable document for recording our book library. However, our current design has one flaw we need to overcome. If we need to enter a new author or media type while we are in the books form, we have to close the book form and open one of the others. If we could enter new authors and media types directly from the books form, it would behave more like an application and make data entry even easier. We can accomplish this through a few short macros. The LibreOffice Basic language is very similar to other Basic languages, such as Visual Basic for Applications. To manipulate the underlying LibreOffice document, we access the Uno framework controlling the document. The Uno framework is quite complex, but I will explain, as best I can, the properties and objects we will use. The goal is not to teach you how to write LibreOffice macros, but how you can use them. Macro Security and Options

While macros allow us to do cool things in our documents, they can also cause problems. Some people use macros to compromise other people's systems, therefore, we need to take a few minutes to talk about macro security. Whether you are running LibreOffice on Linux, Mac, or Windows, malicious code in a macro can compromise your data and possibly your entire system.

Macro security in LibreOffice is simple. Tools > Options opens the Options dialog for LibreOffice. Under LibreOffice, select Security. Click on the Macro Security button to pop up the macro security options. You have four options. Never use the Low security option – it will run macros without asking you. I recommend the Medium security level. With this level, you are prompted whether to run the macros when you open a document containing macros. The High and Very High options require a certificate or folder you designate as trusted. While this is great, I believe nothing trumps the instincts of the user. You usually know whether you were expecting a document to contain macros. When in doubt, click No. Click OK to save your choice and OK to close the options dialog. Now, on to the fun stuff. The Macros

We will write four macros for our database document. Three will deal with opening forms, and the last will update the list boxes for authors and media types. The general idea behind macros is to accomplish tasks that are not built into the program, or to simplify complex tasks. Our macros really accomplish both, as we will simplify the tasks of adding authors and media types and provide functionality not built into the program. Before we can begin to write our macros, we need a container to hold them. Macros are contained in a module. Modules can live in the program itself or within a document. Since our macros are specific to our database file, we will embed them in the document. Macros embedded in a document are available only when the document is loaded. Macros contained in the program are available as long as the program is running. Tools > Macros > Organize Macros > LibreOffice Basic. The LibreOffice Basic Macros dialog pops up. Select book.odb from the Macro from-list. Click the New button. A dialog pops up asking you for a name for the module. Name it FormCalls. Click OK. This brings up the LibreOffice macro editor. The macro comes with a default main subroutine. We will not use this subroutine. Highlight Sub main and End Sub and press the backspace key to delete them. Our first macro is a generalized subroutine for opening a form. A generalized subroutine is written for reuse. We will call this routine twice from other routines we write. Type this subroutine into the editor:

Sub OpenAForm (FormName as String)
        Dim GetForm as Object
        GetForm = ThisDatabaseDocument.FormDocuments.GetByName(FormName)
        GetForm.Open
End Sub

The first line of the subroutine is called the signature. The signature determines how the subroutine is called. A signature starts with the keyword Sub, which defines this call as a subroutine. Next, the name of the subroutine. In our case, OpenAForm is the name of the subroutine. Finally in the parenthesis, we have the arguments used when calling this subroutine. In our case, we have a variable named FormName which is a type String. In the second line of the subroutine, Dim is another keyword. Dim initializes a variable as a type, and, optionally, a value. We define a variable named GetForm as a type Object. The third line assigns a value to the variable GetForm through a chain of commands in the Uno framework. ThisDatabaseDocument refers to the currently open database document. In our case, book.odb. FormDocuments is a collection of all the forms in the document. Finally, GetByName retrieves a specific form object from the collection. Notice, we pass the variable FormName from the signature to this method. Once the call is complete, the variable GetForm is the object of the form name passed to the subroutine. The fourth line calls the Open method of the form. On the fifth line, we tell Basic this is the end of the subroutine with the command End Sub. We will call the OpenAform subroutine twice. Once to open the authors form, and once to open the media form. Add these two subroutines to your editor:

Sub OpenAuthorsForm(oEv As Object)
        OpenAForm("Authors")
End Sub

Sub OpenMediaForm(oEv As Object)
        OpenAForm("Media")
End Sub

The signature on these two subroutines are a little different. Since we will call them from a control within a form, we need to pass the object making the call as an argument, even though we do not use it. The argument oEv is a reference to the object making the call. We will use this to our advantage later, in the last subroutine, but here we do it because it is required. These two subroutines are pretty simple. We just make a call to OpenAForm passing the name of the form we want to open, Authors or Media. The final subroutine deals with our problem of refreshing the data in the list boxes for authors and media when we add authors or media using the two subroutines above:

Sub ListRefresh(oEv as Object)
        oEv.source.model.Refresh
End Sub

Once again, since we will call this subroutine from a control, we need a reference to the control making the call. However, this time we will actually use the object. This subroutine makes a method call to the underlying model of the list box and refreshes the data in the list, thus updating our list of authors or media types. Save your module and close the Basic editor.

Making Connections to Macros

At this point, our macros do nothing. We need to connect them to objects in our form to activate them when needed. First, we will connect the open form subroutines to buttons in our form, and then we will connect the ListRefresh to the list boxes. In the database pane, click on Forms. Right-click the Books form and select edit. Add two push buttons to the form, one under the Authors table and another under the Media table. Right-click the button under the Authors table and select Control to bring up the buttons properties dialog. On the General tab, change the name to AddAuthors and the Label to Add Authors. On the Events tab, click the ellipses (…) button next to Execute Action – which brings up the Assign Action dialog. Click the Macro button to bring up the Macro Selector dialog. In the tree list under Library, select book.odb > Standard > FormCalls. Select OpenAuthorsForm from the Macro Name list and click OK. Click OK to close the Assign Action dialog. Close the buttons properties dialog. Do the same with the button under the Media table, only name it AddMedia, make the label Add Media Type, and assign the macro OpenMediaForm to the Execute Action event. Finally, we need to add the refresh subroutine to our list boxes. Right-click the Authors column in the authors table and select Column. On the Events tab, click the ellipse (…) button beside “When receiving focus”. In the Assign Action button, use the Macro button to assign the ListRefresh macro to the action. This will cause the list to update data from the Authors table when you click on a list box in the column. Do the same for the Media column in the media table. Save your changes to the Books form and close it.

Testing Your Changes

Any time we make changes to our forms, we will want to test them and make sure we got everything right, especially in cases where we have used macros. One simple typo could cause things to not work. Double-click the Books form to open it. Add a new book with an author and media type you have not added already. Click the Add Authors button to make sure it opens the form. Add some authors. Close the Authors form. Click on the authors dropdown list box and verify that the authors you added are there. Do the same test with the Add Media Type button and listbox. Final Thoughts and References

Again, I would like to emphasize that writing macros in LibreOffice Basic is complex. Documentation is pretty sparse, but it is out there. If you are interested in taking up the challenge, here are some references to get you started: LibreOffice Basic Guide: http://wiki.documentfoundation.org/images/d/dd/BasicGuide_OOo3.2.0.odt Andrew Pitonyak's OpenOffice Macro Information: http://www.pitonyak.org/oo.php You can find the macros used in this How-To on pastebin.com at http://pastebin.com/MU2Ztizi Next time, we will move on to another part of the LibreOffice suite and explore the Math module.

Traduzione italiana

Note alla traduzione

Revisione

Note alla revisione

Errata Corrige


CategoryComunitaFcm