La parte fondamentale del disegno di una qualsiasi applicazione è la progettazione dell'interfaccia tra il computer e la persona che lo utilizzo. I componenti fondamentali per la creazione dell'interfaccia sono i form e i controlli.
Il form (letteralmente "forma", "immagine", ma in questo caso indica genericamente la "finestra" di Windows) è l'elemento centrale di ogni applicazione; un form, infatti, costituisce la base dell'interfaccia utente: è in un form che vengono inseriti tutti gli altri controlli, siano essi pulsanti, caselle di testo, timer, immagini, ecc. Un form è prima di tutto un oggetto e, come tale, dispone di proprietà che ne definiscono l'aspetto, di metodi e di eventi che permettono di determinare, tra le altre cose, l'interazione con l'utente.
La creazione di un nuovo form è diversa dalla procedura di inserimento di un controllo, che abbiamo visto nelle lezioni precedenti. Per inserire un nuovo form fate clic sul comando Inserisci form nel menu Progetto oppure fate clic sull'icona corrispondente nella barra degli strumenti (e visibile a lato). A questo punto comparirà la finestra di dialogo Inserisci form: per creare un form vuoto dovete fare clic sull'icona Form. In tale finestra potete inoltre notare che VB mette a disposizione diversi modelli di form predefiniti che si possono utilizzare come basi da personalizzare secondo le proprie esigenze.
Ora che sappiamo come aggiungere un nuovo form, possiamo vedere quali sono le proprietà fondamentali. Una delle più importanti è borderStyle, che permette di definire l'aspetto del bordo della finestra. I valori che può assumere sono 5: None, Fixed Single, Sizable, Fixed Dialog, Fixed ToolWindow e Sizable ToolWindow. I valori più usati sono Sizable (predefinito, vengono visualizzati tutti i pulsanti, di riduzione ad icona, ingrandimento e chiusura, nonché la barra del titolo) e Fixed Dialog (form a dimensione fissa, vengono visualizzati il pulsante di chiusura e la barra del titolo). Potete provare gli altri stili della finestra, che qui sono stati solo accennati, portandovi nella finestra delle Proprietà e andando a modificare la proprietà borderStyle. Un'altra proprietà importante è la proprietà Caption, che permette di specificare la stringa da visualizzare nella barra del titolo del form. Infine, la proprietà Icon consente di selezionare l'icona che contraddistinguerà il form. Per inserire un'icona, andate come di consueto nella finestra delle Proprietà e ciccate sul pulsante con i tre puntini che appare quando si seleziona la proprietà Icon: così facendo verrà mostrata la finestra di dialogo Carica icona, in cui selezionare il file dell'icona (estensione .ICO) desiderata.
Passiamo ora agli eventi più utilizzati, nell'ordine in cui vengono generati. Quando si verifica l'evento Load, tutti i controlli inseriti nel form sono stati creati, anche se la finestra non viene ancora visualizzata; è, questo, uno degli eventi più utilizzati, dal momento che di solito contiene il codice che si vuole venga eseguito quando si carica un form:
Private Sub Form_Load()
End Sub
L'evento Resize viene generato immediatamente prima che il form diventi visibile ed ogni volta che la finestra viene ridimensionata, sia trascinando i suoi bordi, sia ingrandendola, riducendola ad icona e ripristinandola:
Private Sub Form_Resize()
End Sub
L'evento QueryUnload si verifica nel momento in cui un form sta per essere scaricato, cioè rimosso dalla memoria. Tale evento può essere utilizzato per impedire che la finestra venga effettivamente chiusa, al verificarsi di particolari situazioni, impostando il parametro Cancel a true:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'Se imposto il parametro Cancel a true, la chiusura del form verrà annullata.
'Cancel = true
End Sub
Provate a inserire l'istruzione Cancel = true nella routine QueryUnload (oppure fate clic qui per prelevare l'esempio) ed eseguite l'applicazione: in questo modo, premendo il tasto di chiusura sulla barra del titolo, il form non verrà chiuso. Per terminare l'applicazione fate clic sul pulsante Fine nella barra degli strumenti.
Ora ci restano da analizzare i metodi di cui un form dispone. Per rendere visibile un form, si deve richiamare il metodo Show:
Form1.Show
E' possibile visualizzare un form in due modalità: Modal, indica che il form è a scelta obbligatoria, ovvero impone all'utente di dare una risposta, premere un tasto, ecc., prima di restituire il controllo all'applicazione e, quindi, eseguire le istruzioni successive al metodo Show; Modeless: indica che il form non è a scelta obbligatoria, quindi il codice che segue il metodo Show viene richiamato immediatamente dopo la visualizzazione della finestra. Per visualizzare un form a scelta obbligatoria occorre specificare il parametro vbModal quando si richiama il metodo Show:
Form1.Show vbModal
Viceversa, se non specificato alcun parametro, la finestra visualizzata verrà considerata non a scelta obbligatoria (cioè Modeless).
Sviluppando un'applicazione capita praticamente sempre di dover utilizzare più form; quando vogliamo visualizzare un secondo form, ad esempio una finestra contente le opzioni del programma, dobbiamo utilizzare l'istruzione Load, che ha proprio lo scopo di caricare in memoria un form o un controllo. Ad esempio, supponiamo di avere un form principale e di volere che, alla pressione di un pulsante, venga visualizzato un altro form a scelta obbligatoria. Innanzi tutto, inseriamo un pulsante nel form; poi aggiungiamo un secondo form al progetto, come abbiamo visto all'inizio di questa lezione. Ora ci dobbiamo riportare nel primo form, fare doppio clic sul pulsante e, all'interno dell'evento Click, scrivere questo codice:
'Carica il form in memoria.
Load Form2
'Visualizza il form a scelta obbligatoria.
Form2.Show vbModal
Ora avviamo il progetto premendo il tasto F5. Verrà visualizzato il primo form; se facciamo clic sul pulsante, si aprirà la seconda finestra: notate che, se provate a fare clic sul primo form, udirete un beep, dal momento che non potete accedere ad esso prima di aver chiuso la seconda finestra. Chiudiamo il secondo form e, quindi, il primo. L'esempio è anche disponibile per il download facendo clic qui.
Da ultimo, se vogliamo, ad esempio, scaricare un form quando si preme un pulsante, dobbiamo utilizzare l'istruzione Unload:
Unload Form1
Eseguendo tale istruzione verrà generato l'evento QueryUnload, visto in precedenza, in cui è possibile annullare l'uscita. Provate ad inserire questa istruzione nell'evento Click di un pulsante, poi premete il tasto F5 per avviare il progetto e fate clic sul CommandButton: se non avete commesso errori, l'applicazione dovrebbe chiudersi. Se non avete capito qualcosa, potete sempre scaricare questo esempio. Un'ultima nota: se, all'interno di un form, si vuol fare riferimento al form stesso, invece del suo nome è possibile utilizzare la parola chiave Me: Ad esempio, invece di scrivere Unload Form1, dal momento che la finestra che vogliamo chiudere è la stessa in cui viene richiamata la funzione Unload, sarebbe stato lecito (e di solito è la pratica più comune) scrivere Unload Me.
tramite l'impostazione delle proprietà del form, il disegno dei controlli e la scrittura di codice VB per la risposta agli eventi, è possibile creare interfacce sempre più accattivanti. Ricordate che il successo di un programma è legato sempre di più al corretto disegno dell'interfaccia.