• Non ci sono risultati.

Load Unload

Esercizio 10: Calcolo della differenza tra due date

38: Il controllo Label

Il controllo Label (etichetta) è un riquadro destinato a contenere testi di varia natura e lunghezza come, ad esempio, didascalie, titoli, note, spiegazioni, istruzioni.

Il testo da visualizzare nella label viene scritto dal programmatore nella proprietà Text (il contenuto della proprietà Text può essere modificato a piacere, nel corso di esecuzione del programma, secondo le indicazioni del programmatore).

Capitolo 6: I CONTROLLI COMUNI.

Il controllo si presenta con la proprietà Autosize = True e si adatta automaticamente al testo in esso contenuto ed alla larghezza dei caratteri del testo. Per questo motivo, al momento dell’inserimento nel form il controllo si presenta senza le maniglie di dimensionamento, maniglie di dimensionamento che compaiono invece impostando la proprietà AutoSize = False.

Il testo contenuto in un controllo Label può essere solo letto dall’utente del programma; questi non ha nessuna possibilità di scrivere all’interno di una Label per modificarne il contenuto.

Il controllo può anche visualizzare al suo interno un’immagine, in aggiunta al testo, impostando la proprietà Image, ma in questo caso - a differenza di quanto avviene per il testo – le sue dimensioni non si adattano automaticamente a quelle della immagine. Siccome la larghezza del controllo si adatta alla lunghezza del testo, è possibile che un testo troppo lungo faccia finire una parte della label oltre i limiti del form.

Per evitare questo inconveniente è opportuno impostare la proprietà Autosize della label = False: in questo modo il programmatore può dare alla label le dimensioni adatte a visualizzare tutto il testo; il testo contenuto nella label va a capo automaticamente, senza dividere le parole in sillabe, quando raggiunge il limite destro del controllo.

Se il programmatore vuole dividere le linee del testo in modo che questo vada a capo in punti particolari, deve indicare il punto di separazione delle linee nel riquadro della proprietà Text premendo il tasto ENTER sulla tastiera per ogni interruzione di riga. Ad esempio, nella figura seguente si vede la proprietà Text di una label con una lista di nomi. Se il programmatore li scrive uno di seguito all’altro nella proprietà Text, questi compaiono scritti allo stesso modo all’interno della Label. Se il programmatore va a capo dopo ogni nome, la stessa cosa avviene all’interno della label.

Capitolo 6: I CONTROLLI COMUNI.

Figura 90: L’inserimento di un testo spezzato in un controllo Label.

Il testo contenuto in una label può essere modificato o scritto ex novo nel corso della esecuzione di un programma, come vedremo nel prossimo esercizio.

Esercizio 11: Impostare la proprietà Text di un controllo Label dalla Finestra del Codice.

Apriamo un nuovo progetto. Inseriamo nel Form1 sette pulsanti Button e una Label come in questa immagine:

Capitolo 6: I CONTROLLI COMUNI.

Impostiamo queste proprietà del controllo Label1:  AutoSize = False

 BackColor = Yellow

 Font = Microsoft Sans Serif a 14 punti

Obiettivo dell’esercizio è far sì che, premendo i diversi pulsanti, sia visualizzato all’interno della Label1 un testo formattato in modi diversi. In particolare, i primi quattro pulsanti modificheranno la proprietà Text della Label, mentre gli altri tre pulsanti ne modificheranno la proprietà TextAlign, allineando il testo sulla sinistra, al centro o sulla destra del controllo.

Facciamo un doppio clic sul Button1. Accediamo così alla Finestra Proprietà dove troviamo già impostata la procedura per gestire l’evento del clic del mouse su questo pulsante:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click End Sub

Aggiungiamo nella riga centrale, per ora vuota, un comando per visualizzare una frase all’interno della Label1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

Label1.Text = "Questo testo è scritto su una sola linea e va a capo in modo automatico."

End Sub

Notiamo che il testo da visualizzare nella Label1 è scritto tra virgolette e assume un colore diverso dalle altre parti del codice.

Capitolo 6: I CONTROLLI COMUNI.

Torniamo nella Finestra di Progettazione, facciamo un doppio clic sul Button2 e completiamo la procedura relativa all’evento del clic del mouse su questo pulsante: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Label1.Text = "Questo testo va a capo" & vbCrLf & "tre volte" & vbCrLf &

"in modo forzato" & vbCrLf & "usando l'istruzione vbCrLf"

End Sub

Nella riga centrale, il testo da visualizzare nella Label1 è interrotto più volte dal

simbolo di unione & e dalla sigla vbCrLf. La sigla indica che in quel punto il testo dovrà andare a capo, iniziando una nuova linea36

.

Notiamo che ogni spezzone di testo è scritto tra virgolette e che i vari spezzoni sono sempre collegati tra di loro dal simbolo di unione &.

Continuiamo con la procedura relativa al pulsante Button3:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

Label1.Text = "Questo testo è composto di tre frasi. " & vbCrLf & _ "Questa è la seconda frase." & vbCrLf & _

"Questa è la terza frase."

End Sub

Anche in questo caso troviamo un testo spezzato in più parti; ogni parte è collegata alla parte precedente con i simboli di unione &; nel mezzo delle unioni troviamo la sigla vbCrLf che comanda l’inizio di una nuova riga. A differenza della procedura precedente, però, in questo caso il programmatore non ha scritto tutta l’istruzione su una sola riga ma, per comodità di lettura, è andato a capo più volte utilizzando il trattino _. Questo trattino, posto al termine di una riga di istruzioni, indica a VB che l’istruzione, non finita, continua alla riga successiva. Notiamo che ogni trattino di continuazione è preceduto da uno spazio e che l’ultima riga non ha il trattino di continuazione.

La procedura da completare per il Button4 è questa:

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button4.Click

Label1.Text &= vbCrLf & "Questa è una frase aggiunta."

End Sub

Questa procedura comanda un effetto nuovo rispetto a quanto abbiamo visto sino a ora.

36

vbCrLf è l’acronimo di visual basic Carriage return Line feed ( = ritorno del carrello e inizio di una nuova linea).

Capitolo 6: I CONTROLLI COMUNI.

Mentre con i clic sui pulsanti 1, 2 e 3 abbiamo scritto un testo nella Label1 cancellando il testo già presente, questa procedura aggiunge altro testo al testo eventualmente già presente nella Label1.

Notiamo che essa assegna alla Label1 il testo già presente nella Label1 e vi aggiunge la frase "Questa è una frase aggiunta.".

I simboli utilizzati per questa operazione sono due: +=.

Le procedure relative agli ultimi tre pulsanti comandano l’allineamento del testo della Label1, rispettivamente, allineato sulla sinistra della Label, centrato, oppure allineato sulla destra:

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button5.Click

Label1.TextAlign = ContentAlignment.MiddleLeft End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button6.Click

Label1.TextAlign = ContentAlignment.MiddleCenter End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button7.Click

Label1.TextAlign = ContentAlignment.MiddleRight End Sub

Nell’immagine seguente vediamo un esempio di funzionamento del programma. In questo sono stati premuti i pulsanti Button1, Button4 e Button7.

Capitolo 6: I CONTROLLI COMUNI.

LinkLabel

Il controllo LinkLabel visualizza una label alla quale è associato un link a un indirizzo di un sito web o a un indirizzo di posta elettronica.

Perché il clic sul link abbia un seguito e apra effettivamente la pagina richiesta, tuttavia, è necessario scrivere nel codice del programma una procedura di questo tipo: Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As

System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles

LinkLabel1.LinkClicked

System.Diagnostics.Process.Start("http://vbscuola.it") End Sub