![]() |
![]() Sincronizza Indice |
![]() Scarica il progetto |
![]() Testo dell'articolo |
![]() Stampa l'articolo |
Ma quelle coordinate a cosa si riferiscono? Dove si trova l'origine 0,0 d'esse? Le coordinate di ogni oggetto si riferiscono sempre al loro oggetto contenitore. Per esempio un pulsante avrà le coordinate relative al form dentro il quale il pulsante è inserito. L'angolo superiore sinistro del form avrà le coordinate 0,0. Gli oggetti contenitore hanno la funzione di raggruppare più controlli all'interno d'essi. I controlli contenuti ereditano alcune caratteristiche e comportamenti dei loro contenitori; per esempio quando l'oggetto contenitore è disabilitato mediante la proprietà Enabled tutti i controlli all'interno d'esso non risponderanno agli eventi e non saranno quindi funzionanti. Altresì quando l'oggetto contenitore è nascosto mediante la proprietà Visible, con esso spariranno tutti i controlli contenuti. Ma l'oggetto Form non è l'unico contenitore
in Visual Basic. Tra i controlli standard Thunder abbiamo come contenitore
anche gli oggetti Frame
Vediamo come possiamo sfruttare un Frame per le sue caratteristiche di oggetto contenitore. Ingrandiamo un po' il nostro form e posizioniamo il nostro frame nel modo visibile nella figura qui a fianco. Chiamiamo il nostro frame ClickFrame. Sorge ora il problema di portare le nostre labels all'interno del frame. Useremo il metodo più semplice: il taglia e incolla. Selezioniamo la Label1 cliccando una volta sopra di essa. Ora, tenendo premuto il tasto CTRL clicchiamo una volta sopra le altre label, fino a selezionarle tutte e sette. Fatto questo, dal menu Modifica, selezioniamo la voce Taglia. Gli oggetti spariranno, ma rimarranno in memoria. Clicchiamo ora una volta sopra il frame ClickFrame ed esso sarà evidenziato. In questo stato apriamo il menu Modifica e selezioniamo la voce Incolla. Verranno inseriti all'interno del frame tutti e 7 gli oggetti tagliati. Si tratta ora di posizionarli per bene all'interno del frame. Aggiustare bene le coordinate spostando gli oggetti o uno per uno oppure tutti contemporaneamente mediante la selezione multipla vista prima.
Il risultato di quest'operazione è un piacevole effetto grafico di raggruppamento di più oggetti. Ma se non offrisse altre caratteristiche, il nostro frame si limiterebbe al solo raggruppamento grafico di oggetti. Tuttavia gli oggetti contenitore forniscono qualche caratteristica in più come la possibilità di poter muovere contemporaneamente tutti gli oggetti contenuti all'interno del frame. Altresì possiamo nascondere o mostrare tutti gli oggetti con una sola operazione. Per spostare uno o più controlli esistenti all'interno di un oggetto contenitore abbiamo usato il metodo del Taglia/Incolla. Per inserire un nuovo controllo all'interno di un oggetto contenitore possiamo semplicemente cliccare sull'icona del controllo dalla casella degli strumenti e tracciare un rettangolo con il mouse sopra la superficie del frame. In questo modo l'oggetto viene automaticamente inserito all'interno del contenitore. Se volessimo, invece, uscire un controllo da un oggetto contenitore possiamo usare la stessa tecnica del Taglia/Incolla, ovvero selezioniamo i singolli controlli da portare fuori e cliccare sull'opzione Taglia del menu Modifica. Fatto questo clicchiamo sulla superficie del form e scegliamo la voce Incolla dal menu Modifica. Ci si potrebbe aspettare che gli oggetti contenuti all'interno di un
frame diventino membri d'esso.
Invece via codice gli oggetti contenuti sono accessibili in maniera normale,
del tutto estranea al loro contenitore.
Stranamente, invece non avviene così. La nostra Label1 sarà comunque membro dell'oggetto Form. Per cambiare la sua caption dobbiamo usare l'istruzione:
oppure, con il form implicito:
Gli oggetti contenitore comandano gli oggetti contenuti soltanto graficamente e non nella struttura del codice. La caratteristica più importante degli oggetti
contenitore si rivela con l'utilizzo degli OptionButton
La proprietà che identifica se un OptionButton è selezionato è la proprietà Value. Il valore True indica che il pulsante è selezionato. Possiamo provare a impostare la proprietà Value di tutti e due gli OptionButton a True per vederne il funzionamento. Ci accorgeremo che non è possibile. Non appena un OptionButton riceve il valore True, automaticamente l'altro OptionButton riceverà il valore False deselezionandosi. Apriamo la finestra del codice
Le istruzioni sono semplicissime: il click sul pulsante OptionOrario
provoca il cambiamento della barra del titolo del form nell'ora corrente
(istruzione Now). Il click sull'altro pulsante scrive sulla barra del
titolo il valore della costante
Lanciamo il programma e vediamo gli effetti di quanto detto. Sebbene questo esempio funzioni nel modo previsto, si consiglia di raggruppare
gli OptionButton in matrici. La
creazione di una matrice di controlli sarà affrontata nel corso
Intermedio. |
Tuttavia, se dovessimo inserire più serie di OptionButton, dovremmo utilizzare obbligatoriamente due contenitori diversi. Infatti il corretto funzionamento di tali pulsanti è determinato dalla posizione d'essi all'interno di un contenitore. Potremmo inserire una serie di pulsanti di opzione sulla superficie del
form e l'altra all'interno di un frame, oppure potremmo creare due frames
e inserire all'interno di ognuno d'essi una serie di pulsanti di opzione. Fibia
FBI
|
![]() |
Vai
alla decima lezione ![]() |