Esercizio 1:
1) Visualizzare all'avvio di Form1 una finestra di messaggio con il testo "Vuoi proseguire?" dotata di pulsanti
come mostra la seguente figura:
2) alla pressione del pulsante Si l'utente deve poter visualizzare una seconda finestra di
messaggio con il testo "Hai proseguito". Alla pressione del pulsante 'No' l'applicazione
dovrà essere chiusa ed alla pressione di 'Annulla' la finestra deve scomparire ma l'applicazione
non deve chiudersi.
Soluzione:
Siccome la finestra di messaggio deve essere visualizzata non appena l'applicazione
viene avviata è necessario inserire la funzione MsgBox che mostra tale finestra, nella sottoprocedura
Form_Load che contiene le istruzioni eseguite dal programma alla sua apertura.
La funzione MsgBox è composta di cinque parametri dei quali solitamente ne vengono utilizzati tre: il testo da visualizzare (nel nostro
caso "Vuoi proseguire?", una o più costanti che adesso vedremo ed infine il nome dell'applicazione
che può essere indicato o meno (la figura sopra è stata ottenuta senza indicare il nome
dell'applicazione così Visual Basic ha assegnato il nome "Progetto1").
La serie di costanti da indicare specifica infine il tipo di finestra di messaggio: vbYesNo
include due pulsanti: 'Si' e 'No', vbOkCancel include 'Ok' e 'Annulla' e così via.
Ma possono essere impostate anche le icone che appaiono sulla sinistra indicando ad
esempio vbCritical oppure vbInformation. E'utile quindi sperimentare uno dopo l'altro queste
costanti.
Inoltre è possibile unire le costanti attraverso l'operatore '+':
ad esempio vbYesNo & vbCritical visualizza una finestra con i pulsanti 'Si' e 'No' con l'icona
della x bianca su sfondo rosso (che corrisponde ad un errore critico).
Per ottenere il risultato della figura sopra bisognerà quindi indicare:
Private Sub Form_Load()
MsgBox "Vuoi proseguire?", vbYesNoCancel + vbExclamation
End Sub
|
Adesso bisogna considerare la gestione dei vari casi 'pressione dei tasti'. Per far questo
si deve assegnare ad una variabile (di tipo Integer) il risultato della funzione. Questa variabile
indicherà quale tasto ha premuto l'utente. Con l'assegnazione ad una variabile del risultato
di una funzione, si deve racchiudere quest'ultima entro parentesi tonde:
Private Sub Form_Load()
Pulsante_Premuto = MsgBox("Vuoi proseguire?", vbYesNoCancel + vbExclamation)
End Sub
|
E adesso la gestione dei casi vera e propria: risulta più utile utilizzare una forma
del tipo Select Case ma siccome non è stata ancora introdotta nel corso si può
vedere come gestire la situazione con If...End If:
Diciamo che se l'utente ha premuto il pulsante 'Si' (la costante che indica solo il pulsante
'Si' è vbYes) si visualizza una seconda finestra
di messaggio col testo "Hai proseguito" questa volta senza indicare la funzione MsgBox tra parentesi tonde in quanto
non c'interessa sapere quale pulsante ha premuto l'utente su questa seconda finestra di tipo semplice:
If Pulsante_Premuto = vbYes Then
MsgBox "Hai proseguito"
End If
|
Il secondo caso è la pressione del tasto 'No': utilizziamo allora la costante
vbNo ed inseriamo un End per chiudere completamente l'applicazione:
If Pulsante_Premuto = vbNo Then
End
End If
|
ultimo caso: pressione del tasto 'Annulla' (costante vbCancel). L'applicazione rimane attiva ma non succede niente;
semplicemente usciremo dalla sottoprocedura in modo indolore:
If Pulsante_Premuto = vbCancel Then
Exit Sub
End If
|
Codice completo per questo primo esercizio:
Private Sub Form_Load()
Pulsante_Premuto = MsgBox("Vuoi proseguire?", vbYesNoCancel + vbExclamation)
If Pulsante_Premuto = vbYes Then
MsgBox "Hai proseguito"
End If
If Pulsante_Premuto = vbNo Then
End
End If
If Pulsante_Premuto = vbCancel Then
Exit Sub
End If
End Sub
|
Esercizio 2:
1) Alla pressione di un pulsante denominato Command1 visualizzare la finestra CommonDialog Apri
che visualizzi tutti i file di testo .txt e visualizzare in una finestra di messaggio il nome del file
aperto:
Soluzione:
Prima di tutto bisogna importare il controllo Microsoft CommonDialog x.0 attraverso la finestra 'Componenti' cliccando
su Progetto nella barra menu principale e selezionando la voce Componenti:
In secondo luogo si dovrà importare sul piano un controllo CommandButton.
Una volta eseguite queste due operazioni nella sottoprocedura che individua l'evento 'pressione
del pulsante CommandButton1' ossia Command1_Click si dovrà richiamare la finestra
'Apri' utilizzando il metodo ShowOpen dell'oggetto CommonDialog:
Private Sub Command1_Click()
CommonDialog1.ShowOpen
End Sub
|
Adesso ci si deve preoccupare dei filtri che permettano di visualizzare (e quindi di aprire)
un solo tipo di file. Per questo esempio ci servirà impostare un filtro per l'estensione .txt.
Questo viene fatto attraverso la proprietà Filter del controllo CommonDialog. E' però necessario
specificare il filtro prima di aprire la finestra 'Apri' col metodo ShowOpen:
Private Sub Command1_Click()
CommonDialog1.Filter = "Documenti di testo (*.txt)|*.txt"
CommonDialog1.ShowOpen
End Sub
|
La parte prima del simbolo "|" indica il testo che viene visualizzato nella casella 'Tipo file'
mentre la seconda è il filtro vero e proprio.
E' inoltre possibile indicare vari tipi di file ad esempio quelli di testo e quelli con
estensione .doc:
CommonDialog1.Filter = "Documenti di testo (*.txt)|*.txt|Documenti Word (*.doc)|*.doc"
|
Per visualizzare il nome del file si dovrà utilizzare la proprietà FileName
all'interno di una funzione MsgBox:
MsgBox CommonDialog1.FileName
|
Codice completo per questo esercizio:
Private Sub Command1_Click()
CommonDialog1.Filter = "Documenti di testo (*.txt)|*.txt"
CommonDialog1.ShowOpen
MsgBox CommonDialog1.FileName
End Sub
|
Esercizio 3:
1) Dichiarare una matrice di 10 variabili alle quale assegnare con un unico ciclo For...Next
un valore pari al doppio di quello della variabile precedente ad esempio: Variabile1 = 2,
Variabile2 = 4, Variabile3 = 6 eccetera.
2) Visualizzare in una finestra di messaggio la media delle variabili.
Soluzione:
Dichiariamo prima di tutto la variabile che conterrà il valore medio e la matrice di variabili:
Private Sub Form_Load()
Dim TotVar As Integer 'il valore medio
Dim Variabile(1 To 10) As Integer 'la matrice non dinamica
End Sub
|
Quindi per i che va da 1 all'elemento massimo della matrice (definito con la funzione Ubound), assegnamo il valore
alla variabile i:
For i = 1 To UBound(Variabile())
Variabile(i) = i * 2
|
ed aggiorniamo la variabile TotVar aggiungendo il valore dell'i-esima variabile,
chiudendo il ciclo con un Next i:
TotVar = TotVar + Variabile(i)
Next i
|
e finalmente si può visualizzare la media:
MsgBox TotVar / UBound(Variabile())
|
Codice completo per questo esercizio:
Private Sub Form_Load()
Dim TotVar As Integer 'il valore medio
Dim Variabile(1 To 10) As Integer 'la matrice non dinamica
For i = 1 To UBound(Variabile())
Variabile(i) = i * 2
TotVar = TotVar + Variabile(i)
Next i
MsgBox TotVar / UBound(Variabile())
End Sub
|
|