In sintesi
In questa lezione vengono illustrati gli oggetti principali nella libreria dell'oggetto comando.
Nota: questo video corso è stato realizzato con la versione 4 di Instant Developer. Anche se i contenuti sono ancora attuali e sono utili per imparare ad utilizzare Instant Developer, alcune affermazioni sono di fatto superate. Per i dettagli e le ultime novità sulle funzionalità illustrate vi rimandiamo alla sezione di reference che viene tenuta aggiornata giornalmente.
In questa lezione vediamo in dettaglio le procedure e funzioni disponibili nella libreria degli oggetti Command Set e Command.
Vediamo innanzitutto le proprietà Enabled e Visible già viste nella lezione precedente e la proprietà Expanded che permette di espandere e collassare da codice il command set.
Poi vediamo 2 eventi: On Command e On Open Popup. Il primo evento viene scatenato quando un comando di un command set viene attivato. Vengono forniti 2 parametri che permettono di identificare il comando: il suo command number che è un numero interno che univocamente identifica ogni comando e l'indice all'interno del command set (compreso tra 0 e il numero di comandi contenuti nel command set). Se impostiamo il parametro Cancel a true non verrà gestito l'oggetto d'attivazione legato al comando.
L'evento On Open Popup viene scatenato quando il command set viene aperto come popup. Per aprire un command set come popup è sufficiente tirarlo su un panel field o su un comando di un altro command set. Quando attiviamo il panel field o il comando il command set verrà aperto come popup accanto all'oggetto a cui il command set è collegato. Prima di aprire il command set viene scatenato l'evento che permette di annullare l'apertura (mediante il parametro Cancel), di decidere dove posizionare il menu mediante il parametro Direction ma anche di intervenire sui comandi. Per fare questo abbiamo a disposizione varie funzioni e procedure che permettono innanzitutto di sapere quanti comandi sono contenuti nel command set e poi di leggere e scrivere la Caption, cambiare l'icona, leggere e impostare la proprietà visible ed enabled, e leggere e scrivere il command code.
Infine la procedura Open Popup che apre il command set come popup (anche se questo non è attaccato a nessun oggetto) visualizzandolo accanto all'oggetto attivo in quel momento.
La libreria dell'oggetto Command è molto più semplice: le proprietà Enabled Visible e Checked permettono di definire come il comando viene visto a video mentre la proprietà Me permette di leggere il numero interno che univocamente identifica il comando. Si può utilizzare, per esempio, nell'evento On Command per sapere se un determinato comando è quello che è stato attivato.
Vediamo come utilizzarli. Innanzitutto creiamo un nuovo command set con un comando al suo interno. Tale comando chiama la procedura Saluta. Infine tiriamo il command set sul comando Categorie.Dato che non ci interessa vedere il command set anche nel menu disabilitiamo il flag Menu Bar. Lo stesso facciamo per il comando.
Verifichiamo cosa succede in esecuzione.
Il command set viene aperto come popup accanto al comando del menu.
Ora supponiamo di voler aprire un popup di cui non sappiamo nulla a design time. Vogliamo, a run-time, decidere quali comandi sono presenti e le loro funzioni associate. Possiamo riempire il command set con alcuni comandi di cui poi cambiaremo, nell'evento di On Open Popup, la caption, il command code ed eventualmente la proprietà visible, nel caso ci servissero meno comandi.
Supponiamo di voler visualizzare un bottone nella videata dei prodotti il quale, una volta cliccato, apra la popup con tutte le categorie e a seconda della categoria cliccata vogliamo filtrare i soli prodotti di quella categoria.
Apriamo la form ed aggiungiamo il bottone. Poi creiamo il command set e lo leghiamo al panel field appena creato.
Poi aggiungiamo 10 comandi al command set (renderemo poi invisibili quelli che non utilizziamo).
Nell'evento di On Open Popup eseguiamo un for-each sulla tabella categorie e assegniamo all'i-esimo comando la caption giusta ed un command code che ci permetta poi di sapere poi di quale categoria si tratta. Dobbiamo creare una variabile intera per accedere all'i-esimo comando.
Definiamo come command code il carattere C più l'ID della categoria.
Poi rendiamo invisibili i comandi rimanenti.
Nell'evento di On Command identifichiamo quale categoria è stata cliccata estraendo l'ID dal command code. Poi portiamo il pannello in QBE, cambiamo la condizione di filtro e riportiamo il pannello in DATA.
Proviamo l'applicazione e verifichiamone il funzionamento.