• Non ci sono risultati.

Load Unload

Esercizio 12: Un controllo PictureBox con le barre di scorrimento

41: Il controllo ProgressBar

Il controllo ProgressBar (barra di progressione) mostra graficamente, in una striscia colorata, il tempo che l’utente del programma ha a disposizione per effettuare una determinata operazione.

Man mano che il tempo trascorre, la barra si colora da sinistra a destra, sino a risultare tutta colorata allo scadere del tempo disponibile.

La proprietà principale di questo controllo è la proprietà Value (quantità) che determina dove si trova il punto tra la parte della barra già colorata (cioè il tempo trascorso) e la parte restante.

La proprietà Value parte da un livello minimo (proprietà Minimum) definito dal programmatore e aumenta via via con il passare del tempo sino ad arrivare al livello massimo (proprietà Maximum) stabilito dal programmatore. Quando la proprietà Value è uguale al valore della proprietà Minimum, la ProgressBar non è colorata. Viceversa, quando la proprietà Value è uguale al valore della proprietà Maximum la ProgressBar appare pienamente colorata: questo significa che il tempo è scaduto. VB imposta automaticamente le proprietà Minimum e Maximum rispettivamente pari a 0 e a 100; mantenendo questi valori, la proprietà Value della ProgressBar indica anche la percentuale di tempo trascorso (esempio: se la barra è arrivata al valore 45, questo significa che è trascorso il 45% del tempo disponibile).

Vi sono tre modalità di visualizzazione della ProgressBar:

 Blocks (il riempimento colorato avanza a scatti, in questo caso la proprietà Step determina la grandezza dell’avanzamento a ogni scatto);

 Continuous (il riempimento colorato avanza in modo continuo);

 Marquee (il colore interno alla barra rimane fluttuante: l’utente non ha modo di vedere quanto tempo è trascorso né quanto tempo rimane.

Un controllo ProgressBar può anche essere utilizzato per misurare la progressione di altre quantità, non solo il trascorrere del tempo.

Ad esempio, si può usare una ProgressBar per visualizzare il numero dei tentativi compiuti dall’utente in una determinata situazione. Supponiamo che in un gioco l’utente abbia a disposizione al massimo 10 tentativi: in questo caso, il numero dei tentativi effettuati può essere visualizzato da una ProgressBar, impostata con i valori minimo e massimo da 0 a 10; a ogni tentativo questa ProgressBar aumenta il suo valore di una unità.

L’uso principale della ProgressBar è tuttavia la rappresentazione grafica del trascorrere del tempo, per cui questo controllo si trova abitualmente connesso a un componente Timer, come vedremo più avanti.

Capitolo 6: I CONTROLLI COMUNI.

42: I controlli RichTextBox e TextBox.

I controlli RichTextBox (casella di testo potenziata) e TextBox (casella di testo) inseriscono nel form dei riquadri in cui l’utente del programma può leggere o scrivere dei testi più o meno lunghi (anche una sola parola, una frase, un testo, una storia di più pagine…).

Il RichTextBox è un contenitore più ricco di funzioni perché consente di variare la formattazione di parti del testo (in un RichtTextBox è possibile colorare, evidenziare, sottolineare il testo, scrivere in corsivo, cambiare il formato di singole parole o frasi). Il TextBox invece è un contenitore più semplice, con impostazioni di formattazione ridotte, che vengono applicate in modo uniforme a tutto il testo contenuto nel controllo. A differenza del RichtTextBox, il TextBox si dispone automaticamente per ricevere o mostrare un testo su una sola riga. Qualora servano più righe, è necessario impostarne la proprietà Multiline = True.

In entrambi i controlli il testo da visualizzare è inserito dal programmatore impostando la proprietà Text.

Il RichtTextBox visualizza automaticamente una barra verticale per fare scorrere il testo, se questo eccede le dimensioni del controllo.

Nella figura seguente vediamo due caselle di testo: la prima, in alto, è un controllo RichTextBox con tre pulsanti per consentire all’utente di formattare parti del testo (Grassetto, Colore rosso, Evidenziazione); la seconda casella di testo, in basso, è un controllo TextBox normale. Entrambi i controlli mostrano la barra per lo scorrimento del testo in senso verticale.

Figura 93: I controlli RichtTextBox e TextBox.

Il testo scritto dal programmatore nella proprietà Text compare all’avvio del programma nella casella di testo evidenziato su uno sfondo blu, come se fosse stato

RichTextBox

TextBox Tre pulsanti di formattazione di parti di testo nel RichTextBox

Capitolo 6: I CONTROLLI COMUNI.

selezionato con il mouse. Quando l’utente inizia a scrivere, con la pressione di qualsiasi tasto ottiene l’effetto di cancellare il testo preesistente:

Figura 94: Un controllo TextBox con il testo di default evidenziato in blu. Se si desidera che l’utente non possa modificare il testo che compare in una casella di testo è necessario impostare la sua proprietà ReadOnly (solo lettura) = True.

Con questa impostazione l’utente non potrà fare aggiunte o modifiche al testo che compare nel RichTextBox o nel TextBox: l’utente potrà solo leggerlo, evidenziarlo con il trascinamento del mouse, copiarlo ed eventualmente esportarlo verso un programma di elaborazione dei testi.

Una casella di testo con la proprietà ReadOnly = False ha lo sfondo di colore bianco, altrimenti lo sfondo è di colore grigio.

Il testo da visualizzare in un RichtTextBox o in un TextBox può essere assegnato a una variabile di tipo String (stringa di testo); questa variabile può subire tutte le elaborazioni che il programmatore desidera e il risultato finale può essere visualizzato nella casella di testo.

Ne vedremo un esempio nel prossimo esercizio.

Esercizio 13: Elaborazione di una variabile di tipo String da visualizzare in un TextBox.

In questo esercizio vedremo l’impostazione di alcune proprietà di un TextBox dal codice del programma, e l’elaborazione di un testo come una variabile da visualizzare in questo TextBox.

Capitolo 6: I CONTROLLI COMUNI.

Apriamo un nuovo progetto e inseriamo nel form un controllo TextBox, in alto a sinistra, e due pulsanti Button come in questa immagine:

Non impostiamo alcuna proprietà del TextBox, perché lo faremo dal codice del programma.

Copiamo e incolliamo nella Finestra del Codice questo listato: Public Class Form1

' Crea una variabile di nome Testo, valida per tutte le procedure di questo codice:

Dim Testo As String

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

' Definisce le proprietà del controllo TextBox1:

TextBox1.Multiline = True

TextBox1.Size = New Size(260, 170) TextBox1.ReadOnly = True

TextBox1.Font = New Font("Arial", 12) End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

' Elabora il contenuto della variabile Testo e al termine lo visualizza nel TextBox1:

Testo = "ISTRUZIONI." & vbCrLf

Testo += "Puoi utilizzare questi tasti:" & vbCrLf

Testo += "P = inserire/togliere una pausa durante il gioco;" & vbCrLf Testo += "Q = interrompere (premere Y oppure N per il sì o per il no);" & vbCrLf

Capitolo 6: I CONTROLLI COMUNI.

Testo += "M = ascoltare/eliminare i suoni;" & vbCrLf

Testo += "L = aumentare o diminuire la risoluzione del gioco."

TextBox1.Text = Testo End Sub

Private Sub Button2_Click_1(sender As System.Object, e As System.EventArgs) Handles Button2.Click

' Elabora il contenuto della variabile Testo e al termine lo visualizza nel TextBox1:

Testo = "Per leggere le istruzioni, premi il pulsante Button1."

TextBox1.Text = Testo End Sub

End Class

Ecco un’immagine del programma in esecuzione:

Per lo studio delle proprietà e delle azioni del controllo TextBox rinviamo la lettrice o il lettore al paragrafo 171: Stampare un testo. 746.

MaskedTextBox

Il controllo MaskedTextBox (casella di testo con schema obbligato) è un contenitore di testo che presenta all’utente uno schema vincolante, da usare e da rispettare per l’immissione di dati.

Capitolo 6: I CONTROLLI COMUNI.

Lo schema vincolante indica all’utente quali caratteri sono ammessi nel testo, e in quali posizioni; l’utente, quando scrive in questo contenitore, deve attenersi a tali indicazioni, altrimenti il programma non accetta i dati immessi.

Esempio: in un programma in cui l’utente deve scrivere una data, può essere inserito un MaskedTextBox che accetti la data solo se questa è scritta nel formato “gg/mm/aaaa” (due caselle per indicare il giorno, due caselle per il mese, quattro caselle per l’anno).

In questo caso, il programma accetta una data scritta come 25/12/1995 e rifiuta una data scritta come 25/12/95.

Un esempio dell’uso del controllo MaskedTextBox è visibile nel paragrafo dedicato al componente ErrorProvider, a pag. 268.