Continuiamo il nostro esame dei controlli standard di Visual Basic: in questa lezione ci occupiamo dei controlli Frame, CheckBox e OptionButton.
Il controllo Frame (cornice) permette di raggruppare elementi dell'interfaccia logicamente legati fra loro; in un Frame, ad esempio, possiamo inserire tutte le opzioni relative al salvataggio dei file, oppure alla personalizzazione dell'interfaccia, ecc. La comodità del Frame è che tutti gli elementi inseriti in esso vengono trattati come un "blocco" unico; ad esempio, se si nasconde un Frame, verranno automaticamente nascosti anche tutti i controlli al suo interno. Per inserire un elemento in un Frame è necessario disegnarlo all'interno della cornice stessa; fatto questo, sarà possibile spostarlo solo entro i margini del Frame. trattandosi di un contenitore di altri oggetti, di solito non vengono gestiti i suoi eventi, ma ci si limita a modificare poche proprietà, innanzi tutto la Caption, per modificare l'etichetta del controllo.
Il controllo CheckBox (casella di controllo) è rappresentato graficamente da un'etichetta con a fianco una casella di spunta, nella quale viene visualizzata una crocetta quando viene selezionato. Solitamente è utilizzato per visualizzare una serie di opzioni tra cui selezionare quelle desiderate. Anche il CheckBox dispone della proprietà Caption, per modificarne l'etichetta. La proprietà più importante di questo controllo è la Value, che permette di impostare o recuperare lo stato del CheckBox, cioè di sapere se esso è selezionato oppure no. I valori che può assumere sono tre:
0 - Unchecked, il controllo non è selezionato;
1 - Checked, il controllo è selezionato;
2 - Grayed, il controllo è disabilitato nello stato di selezionato.
Per cambiare lo stato del controllo è possibile modificare la proprietà Value anche da codice:
Check1.Value = vbUnchecked 'Deseleziona il controllo.
Check1.Value = vbChecked 'Seleziona il controllo.
Check1.Value = vbGrayed 'Deseleziona il controllo nello stato di selezionato.
vbUnchecked, vbChecked, vbGrayed sono costanti definite da Visual Basic e valgono rispettivamente 0, 1 e 2; si possono quindi usare senza differenza le costanti, come mostrato sopra, oppure i loro valori numerici. L'evento più utilizzato del CheckBox è l'evento Click, che si verifica quando si modifica lo stato del controllo; di solito, in tale evento si inserisce il codice per attivare o disattivare altri controlli in accordo con la scelta effettuata. Come esempio, diamo un'occhiata a questa routine:
Private Sub Check1_Click()
If Check1.Value = vbChecked Then
'Il controllo è stato selezionato.
Check1.Caption = "Il controllo è stato selezionato."
Else
'Il controllo è stato deselezionato.
Check1.Caption = "Il controllo è stato deselezionato."
End If
End Sub
Quando si verifica l'evento Click, viene controllato se il controllo è stato selezionato o deselezionato e, quindi, cambia in modo opportuno la Caption del CheckBox. E' importante notare che l'evento Click viene generato anche quando si modifica la proprietà Value da codice.
Il controllo OptionButton (pulsante di opzione) è simile al CheckBox, ma con la differenza che in un gruppo di controlli OptionButton è possibile selezionare un solo elemento alla volta, mentre è possibile selezionare più controlli CheckBox contemporaneamente. Anche per questo tipo di controlli le proprietà più utilizzate sono la Caption e la Value, che in tal caso assume i valori true (controllo selezionato o False (controllo non selezionato). Solitamente gli OptionButton sono raggruppati in un altro controllo, come un Frame, perché VB presume che tutti i pulsanti di opzione presenti nello stesso form appartengano al medesimo gruppo; di conseguenza è possibile selezionare solo un OptionButton alla volta tra quelli presenti in uno stesso gruppo. Anche l'OptionButton dispone dell'evento Click, che si verifica quando si modifica il suo stato, ovvero quando viene selezionato facendo clic su di esso.
Come di consueto vediamo ora con un esempio di mettere in pratica quanto abbiamo detto in questa lezione. Vogliamo creare un semplice programma che visualizzi, all'interno di un Frame, una serie di opzioni per modificare il colore del testo di una Label. Una casella di controllo, poi, deve permettere di visualizzare o nascondere l'etichetta. Per semplicità, d'ora in poi indicheremo solo gli elementi che si vogliono inserire nel form e quali proprietà andranno modificate; è possibile fare riferimento all'immagine visualizzata a lato per avere un'idea della disposizione dei controlli. E' possibile, inoltre, scaricare un form che contiene solo gli elementi dell'interfaccia utente, nel caso non si riesca a ricreare la disposizione dei controlli proposta.
Ora dobbiamo inserire il codice del nostro programma. Intuitivamente, vogliamo che quando l'utente esegue un clic su uno degli OptionButton, il colore del testo venga modificato. Per intercettare la pressione del tasto del mouse sopra il controllo sopra menzionato dobbiamo utilizzare l'evento Click; per modificare il colore del testo, invece, è necessario modificare la proprietà ForeColor dell'etichetta Label1. Detto questo, il codice diventa quasi autoesplicativo:
Private Sub Option1_Click()
'Si è scelto di visualizzare il testo in rosso.
Label1.ForeColor = vbRed
End Sub
Private Sub Option2_Click()
'Si è scelto di visualizzare il testo in verde.
Label1.ForeColor = vbGreen
End Sub
Private Sub Option3_Click()
'Si è scelto di visualizzare il testo in blu.
Label1.ForeColor = vbBlue
End Sub
Anche in questo caso sono state utilizzate le costanti definite da Visual Basic per i codici dei colori; nella Guida in linea è possibile trovare tutte le informazioni a riguardo. Ora però vogliamo completare l'esempio aggiungendo il codice che vogliamo venga eseguito quando si fa clic sul controllo Check1. In questo caso, sempre nell'evento Click, dobbiamo verificare lo stato del controllo (cioè se è selezionato oppure no) e, di conseguenza, visualizzare o nascondere la Caption:
Private Sub Check1_Click()
If Check1.Value = vbChecked Then
'La casella di controllo viene selezionata; visualizza la Caption.
Label1.Visible = true
Else
'La casella di controllo viene deselezionata; nasconde la Caption.
Label1.Visible = False
End If
End Sub
Ora non ci resta che premere il tasto F5 per avviare il progetto, che è anche disponibile per il download facendo clic qui.