Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Sto sviluppando un progetto e vorrei dare all'utente la possibilità di scegliere quale form caricare utilizzando i pulsanti di opzione. Questa è una scelta implementativa molto comune. Come punto di partenza definiamo il primo form che fornirà le scelte all'utente. Nel nostro caso avremo quattro programmi che l'utente può scegliere e quattro OptionButton sul form principale. Dunque sul nostro Form1 abbiamo una matrice di quattro pulsanti di opzione. Ricordiamo che per formare una matrice di controlli basta inserire almeno due pulsanti e dargli lo stesso nome. Verrà chiesto se si desidera formare una matrice di controlli. Rispondendo SI verrà impostata in automatico la proprietà Index, che differenzia i diversi pulsanti all'interno della matrice. Nel nostro esempio i quattro pulsanti si chiameranno Selezione e le loro proprietà Index andranno da 0 a 3. Posizioniamo i quattro pulsanti nel modo visibile nella figura, avendo cura di posizionare il pulsante con Index 0 nella prima posizione, quello con Index 1 subito sotto e così via.
Inseriamo anche un pulsante standard di nome PulsanteOK ed assegnamogli la Caption Esegui. Al click sopra di esso verrà controllato lo stato dei quattro pulsanti e verrà caricato il programma corrispondente al pulsante la cui proprietà Value è True. Per questo scopo è fondamentale che i pulsanti abbiano valori della proprietà Index consecutivi (0, 1, 2, 3). Prima di passare al codice stabiliamo quali saranno i forms che verranno
caricato nel momento in cui sarà premuto il pulsante Esegui.
Faremo in modo che non sia possibile aprire più di un programma per volta e la chiusura di un programma provochi la ricomparsa del form di scelta. Quando l'utente ha deciso di terminare l'uso del programma dovrà chiudere il form di scelta.
Cominciamo a lavorare nel codice dei diversi programmi. Per ognuno dei quattro forms dovremmo avere quindi:
Fatto questo apriamo la finestra del codice di Form1 ovvero del form di scelta programma e scriviamo nella routine dell'evento Click di PulsanteOK:
In quesa routine dichiareremo due variabili: PulsantePremuto che indicherà l'indice (ovvero il contenuto della proprietà Index) del pulsante premuto e Contatore che ci servirà come appoggio per controllare qual'è il pulsante premuto.
All'interno del codice i singoli elementi della matrice sono indicati con Selezione(0), Selezione(1) a seconda del loro indice. Subito sotto le dichiarazioni abbiamo un ciclo che controlla tutti i
pulsanti Selezione. Se durante il ciclo un pulsante è attivato,
ergo ha la proprietà Value impostata a True, viene memorizzato
il valore di Contatore all'interno della variabile PulsantePremuto
ed avviene l'uscita forzata dal ciclo con Viene fatto un controllo per i singoli valori ammissibili (dallo 0 al 3) e di conseguenza viene caricato (con Load) e mostrato (con Show) il form relativo. Prima di uscire dalla routine viene nascosto il form di scelta, ma non
verrà scaricato dalla memoria. Il Form1 verrà mostrato nuovamente
all'uscita dei singoli programmi, attraverso l'istruzione È estremamente non sottovalutare questo: un form nascosto mediante
l'istruzione Hide non viene né chiuso né scaricato dalla
memoria. È un errore molto comune nascondere un form, mostrarne
un altro e, quando terminato l'uso, chiudere il secondo senza chiudere
il primo. |
Si è preferito in quest'esempio la chiarezza del codice e la sua semplicità al risparmio di istruzioni. Lo stesso codice poteva, infatti, essere rappresentato con circa 11 righe di codice anziché le 25 viste sopra. Fibia
FBI
|
Torna all'introduzione delle Richieste dei lettori |