VB I controlli di VB6 pg6
Textbox multiriga e limitazione della lunghezza del testo
Per default una casella di testo non permette di andare a capo, ma il testo viene
Fig. 1: Per modificare il testo utilizzare la finestra proprietà del TextBox.

visualizzato su un'unica riga che scorre verso sinistra nel momento in cui viene raggiunto il margine del controllo. Per creare un TextBox, che assomigli ad un classico programma di elaborazione testi, è sufficiente impostare la proprietà MultiLine pari a True e la proprietà ScrollBars a 3-Both. In questo modo appaiono le barre di scorrimento orizzontale e verticale che permettono di scorrere il TextBox in modo da visualizzare un testo più lungo rispetto alle dimensioni del controllo. Se si pone la proprietà ScrollBars a 2-Vertical verrà visualizzata soltanto la barra verticale ottenendo l’effetto di mandare automaticamente a capo il testo che viene digitato, nel momento in cui diventa più lungo del controllo. Nel caso precedente con la proprietà ScrollBars = 3-Both la funzione di ritorno a capo automatico viene disabilitata perciò per passare alla riga successiva si deve premere il tasto Invio. Naturalmente le barre di scorrimento vengono visualizzate soltanto se la proprietà MultiLine è pari a True. VB non offre nessuna facility per la gestione delle caselle di testo multiriga, pone anzi alcune problematiche. Quando si utilizza un normale elaboratore di testo si usano con indifferenza i tasti INVIO e TAB rispettivamente per andare a capo e per inserire un carattere di tabulazione, ma in VB non è sempre possibile, in particolare: se nel form è presente un CommandButton predefinito, premendo il tasto INVIO non si avrà il ritorno a capo ma l’azione del clic sul CommandButton; inoltre premendo il tasto Tab si ha sempre l’effetto di far passare il focus al controllo successivo presente nel form (così come impone lo standard Windows). In molti casi non è possibile risolvere questi problemi per questo è consigliabile avvisare l’utente di usare i tasti Ctrl+Invio per andare a capo e Ctrl+Tab per inserire i caratteri di tabulazione. Per limitare la lunghezza del testo si può usare la proprietà MaxLenght in cui specificare il numero massimo di caratteri che possono essere immessi nel TextBox. Quando l’utente tenta di digitare dei caratteri oltre il limite imposto da MaxLenght, viene emesso un bip e non viene più accettato nessun’altro carattere. Per non imporre limiti al numero di caratteri digitabili nel TextBox si deve porre MaxLenght pari a zero (valore di default).

Due novità di VB6: CausesValidation e Validate
Fino all’uscita di VB6 il meccanismo di convalida dei dati dava luogo a notevoli problemi, gli eventi deputati alla convalida erano Change oppure LostFocus che viene generato dopo lo spostamento dello stato attivo ad un altro controllo. In VB6 si possono utilizzare l'evento Validate e la proprietà CausesValidation per verificare l'input di un controllo prima che lo stato attivo passi al controllo successivo. Quando il focus lascia il controllo, VB controlla la proprietà CausesValidation del controllo che sta per ricevere il focus. Se il valore di CausesValidation è pari a True allora viene attivato l’evento Validate nel controllo che sta perdendo il focus, in questo modo è possibile controllare da codice il contenuto e se necessario annullare lo spostamento del focus impostando l’argomento Cancel=True. Con l'evento Validate, quindi, lo stato attivo viene spostato su un altro controllo solo dopo che sono stati soddisfatti i criteri di convalida dei dati.

Il controllo Label
Il controllo Label (etichetta) è solitamente usato per rendere più esplicativa l’interfaccia, ad esempio come didascalia di una casella di testo, e molto di rado viene usato come oggetto programmabile. Così come il TextBox le Label possono visualizzare un testo sullo schermo, la differenza sostanziale sta nel fatto che l’utente non può modificare il testo contenuto nel controllo. Come per il TextBox sono disponibili numerose proprietà per modificare l’aspetto dell’etichetta perciò saranno disponibili le proprietà Alignment, Font, BackColor, ForeColor ecc. Per impostare il testo contenuto in una Label si deve usare la proprietà Caption, non è presente, come per il TextBox, la proprietà Text. Se il testo contenuto nella Label è particolarmente lungo oppure se varia la sua lunghezza da programma, si può evitare che venga troncato dal bordo destro della Label usando le proprietà: AutoSize per far sì che il controllo si ridimensioni automaticamente adattandosi alla lunghezza della stringa; WordWrap per permettere l’estensione del testo su più righe. Naturalmente si deve fare attenzione che le etichette non crescano troppo in modo da non coprire controlli dell’interfaccia utente. Un caso tipico di programmazione di un’etichetta è quello in cui si vuole realizzare l’effetto che si vede navigando in internet, di etichette di colore diverso dalle altre che fanno cambiare la forma del mouse quando ci si passa sopra per indicare che cliccando su di esse verrà effettuata una azione (tipicamente si attiva un link ad un altro sito oppure si apre una finestra di dialogo). Per ottenere questo effetto si può usare la proprietà MousePointer per modificare la forma del mouse e scrivere il codice necessario nell’evento click della label.