Introduzione al Visual Basic

Transcript

Introduzione al Visual Basic
Introduzione al Visual Basic
Chi intraprende lo studio di un nuovo linguaggio come il Visual Basic, come primo
approccio, fa bene a procurarsi un calcolatore fornito del sistema operativo Windows, del
Linguaggio stesso e di un buon word-processor, nonché un editore di immagini.
WordPad e Paint fanno già parte di Windows e possono servire benissimo ai nostri scopi,
almeno nella fase iniziale.
Nel seguito supporremo che il lettore disponga quanto meno della versione Windows95 e
di Visual Basic 5.0 per studenti. É ovvio che qualunque versione successiva a quelle dette
è altrettanto buona e che il detto software deve essere stato installato correttamente.
Windows e i suoi elementi
Dal punto di vista del futuro programmatore, Windows è costituito da una finestra di base,
che nel seguito individueremo con Screen e che occupa l'intero schermo e su cui sono
poggiati degli oggetti a forma di figurine (icone) o altre finestre che, spesso, rappresentano
parti di programmi in esecuzione.
Gli oggetti
Dal nostro punto di vista, tutto ciò che vediamo rappresentato sullo Screen è una finestra,
quindi anche le icone, i pulsanti, le etichette, i menù a discesa, le barre di pulsanti, le
caselle di testo ecc …
Queste finestre, di natura grafica a volte diversissima, sono gli elementi base di Windows
o i suoi componenti; ci riferiremo a loro come a oggetti di Windows.
Questi oggetti hanno, nonostante il loro diverso aspetto, molte cose in comune e in
particolare:
● tutti gli oggetti hanno una forma rettangolare, anche quando ciò non appare;
● tutti gli oggetti appartengono ad un'altra finestra-oggetto, solo lo Screen non ha un
contenitore;
● tutti gli oggetti hanno una larghezza (Width) e una altezza (Height)
● tutti gli oggetti hanno una ascissa (Lef ) e una ordinata (Top) dell'angolo in alto a
sinistra rispetto allo stesso vertice del contenitore; Left è considerato positivo da
sinistra verso destra mentre Top è misurato positivo quando diretto verso il basso;
● tutti gli oggetti visualizzabili hanno un attributo (Visible) che può assumere il valore
falso o vero e un colore di fondo (BackColor) ;
● tutti gli oggetti hanno un proprio attributo (Enable) che quando assume il valore
vero definisce lo stato attivo di funzionamento dell'oggetto stesso, per contro il
valore falso ne definisce lo stato disattivo;
● tutti gli oggetti hanno un nome (Name) che li identifica univocamente, pertanto non
ci possono essere più di un oggetto con lo stesso nome.
Figura 1 Attributi di posizione di un oggetto rispetto al suo contenitore
●
tutti gli oggetti visualizzabili graficamente hanno un aspetto (Appearance) che può
essere piatto (Flat) o tridimensionale (3D);
Inoltre i predetti oggetti, tutti quanti, almeno quando siano visualizzabili in un contenitore,
sono in grado di eseguire delle azioni che chiameremo metodi. Queste azioni (metodi)
dipendono dai valori degli attributi (proprietà) prima detti e, anche, da valori che vengono
passati ai metodi come parametri.
I metodi agiscono sugli oggetti come procedure o procedimenti capaci di alterare, in base
ad un prefissato programma, i valori di uno o più proprietà o attributi.
Per la gran parte degli oggetti standard di Windows i metodi sono predefiniti dai loro
costruttori e fra questi, i seguenti sono comuni alla gran parte degli oggetti:
● Move (x1, y1, b , a) dove (x1,y1) sono le coordinate del vertice superiore sinistro
mentre (b,a) sono la nuova base e la nuova altezza della finestra-oggetto viste dal
contenitore; il comando esegue lo spostamento e il ridimensionamento dell'oggetto.
● SetFocus che sposta lo stato attivo sull'oggetto rendendolo capace di reagire ai
comandi provenienti dall'utente e anche a quelli provenienti dal programma;
● ZOrder che, per gli oggetti visualizzabili, quando vale 0 porta l'oggetto a cui è
applicato in primo piano rispetto gli altri oggetti che popolano il contenitore mentre
quando vale 1 l'oggetto viene portato in secondo piano.
Ogni oggetto specifico ha, poi, i suoi metodi particolari, specificatamente studiati per
realizzare complesse funzioni a cui, senza saperlo, siamo abituati nell'uso quotidiano di
Windows.
Windows è un sistema operativo a eventi, nel senso che il sistema passa la gran parte del
suo tempo a "spiare" o "ascoltare" i dispositivi del calcolatore, attento alle variazioni di
stato delle sue propaggini (pressione di un tasto, movimento del mouse, termine o inizio di
un'operazione su disco, comunicazioni con la porta seriale o con la stampante ecc…
Quando uno qualsiasi dei dispositivi del calcolatore intraprende o termina un'azione, in
qualche modo il sistema operativo Windows viene avvertito, riceve, cioè, un messaggio
dal dispositivo e tramite questo viene informato sia della natura che dell'entità della
variazione intervenuta.
La ricezione del messaggio da parte di Windows e il conseguente inizio di un processo di
reazione noi lo chiameremo Evento.
Tutti gli oggetti di Windows sono sensibili agli eventi; in particolare la gran parte di quelli
visibili hanno in comune la capacità di rilevare, quando sono attivi, alcune azioni eseguite
dall’utente o dal sistema operativo:
● Click viene generato quando si preme e si rilascia un pulsante del mouse su un
oggetto oppure quando si modifica un oggetto.
● DblClick viene generato quando si preme e si rilascia due volte in rapida
successione un pulsante del mouse puntato su un oggetto. Per una finestra, l’evento
DblClick viene generato quando si fa doppio clic con il pulsante sinistro del mouse
su un suo contenuto o su una sua area vuota.
● MouseUp e MouseDown vengono generati quando si preme (MouseDown) o si
rilascia (MouseUp) un pulsante del mouse
● MouseMove Viene generato quando si sposta il mouse.
● GotFocus viene generato quando lo stato attivo viene spostato su un oggetto
premendo TAB o facendo clic sull'oggetto oppure utilizzando il metodo SetFocus
nel codice. Una finestra può ricevere lo stato attivo solo quando tutti i controlli
visibili sono disattivati.
● LostFocus viene generato quando lo stato attivo viene spostato su un altro oggetto,
cioè su un oggetto diverso da quello che detiene il focus.
● KeyDown e KeyUp vengono generati quando si preme (KeyDown) o si rilascia
(KeyUp) un tasto mentre lo stato attivo
● si trova su un oggetto.
● KeyPress viene generato quando si preme e si rilascia un tasto.
● Change indica che il contenuto di un oggetto è stato modificato. Il momento e le
modalità con cui questo evento viene generato dipendono dall’oggetto.
Finestre di Form e Controlli
Come si è già avuto occasione di dire Windows si manifesta all’utente attraverso il
contenuto dello Screen dove sono depositate, in genere, delle icone collegate
all’esecuzione di programmi o applicazioni.
Ribadendo che tutto ciò che Windows mostra è un oggetto, vogliamo qui distinguere le
finestre delle applicazioni – così si mostrano quando sono in funzione – da quelle di tutti
gli altri oggetti.
Le finestre delle applicazioni in funzione sono destinate a contenere altri oggetti di
Windows e si chiamano finestre Form.
Tutte le finestre-oggetto destinate a essere contenute dentro un Form si chiamano
controlli.
La differenza fra questi due tipi di oggetti di Windows è grande dal punto di vista del
programmatore, in quanto ai form corrispondono i programmi eseguibili che risiedono sul
disco rigido in file il cui nome è del tipo *.exe mentre ai controlli corrispondono
programmi sistemati in file non direttamente eseguibili che risiedono nella directory
…\windows\system\… e che hanno estensione *.ocx.
Questi ultimi sono in gran parte componenti standard di Windows. Vi sono molti controlli,
però, non prodotti dalla Microsoft , che vengono forniti da terze parti e possono essere
normalmente scritti nel linguaggio C o Visual C++, in Visual Java++ o, più
semplicemente, in Visual Basic.
Il form
È un oggetto finestra o finestra di dialogo. I form sono contenitori per controlli e possono,
sostanzialmente, essere di tre tipi:.
● MDI (interfaccia a documenti multipli) è costituito da una finestra che può fungere
da contenitore per form secondari e controlli. Le finestre secondarie, dette anche
finestre figlie (child) non possono uscire fuori dalla principale. Il form MDI
possiede una barra del titolo, una barra del menù, una barra degli strumenti e,
quantomeno, una finestra figlia.
● SDI (interfaccia a documento singolo) è costituito da un form che può posizionarsi
in un punto qualsiasi dello schermo, può contenere controlli ma non ha finestre
figlie; ulteriori altre finestre della stessa applicazione sono libere di spostarsi nello
schermo senza alcun vincolo. Anche questo tipo di form possiede sempre una barra
del titolo, una barra del menù e una barra degli strumenti; i controlli vengono
posizionati direttamente sul form stesso.
● La finestra di dialogo, è una finestra non tipizzata, può essere privata della barra di
del titolo o intestazione, dei pulsanti di ogni tipo e, perfino, del bordo.
I controlli
Sono oggetti che è possibile inserire in un form e che prevedono per sé proprietà, metodi
ed eventi specifici alla funzione per cui sono costruiti. I controlli consentono di ricevere
l'input dell'utente, visualizzare l'output e generare routine di eventi. È possibile gestire la
maggior parte dei controlli utilizzando i loro metodi. Alcuni controlli sono interattivi,
ovvero rispondono alle azioni eseguite dall'utente, mentre altri sono statici, ovvero
accessibili solo attraverso il codice.
I controlli standard di Windows sono i seguenti:
●
●
●
Label (etichetta), è adatto a produrre scritte sulla finestra
ospite. Il controllo è di tipo grafico.
TextBox o Casella di Testo, è adatto ad accettare un testo, anche su più righe, come
input. Il controllo può anche essere usato per visualizzare come se fosse una
etichetta.
Frame o Cornice, viene usato soprattutto come contenitore di altri controlli come
●
●
●
●
●
●
●
●
check, option, pulsanti.
CommandButton o pulsante di comando, usato prevalentemente per iniziare,
interrompere o concludere un processo un evento o un procedimento.
CheckBox pulsante di selezione binaria. Quando il controllo viene selezionato il suo
valore associato diviene vero mentre diviene falso quando deselezionato. La
selezione è evidenziata graficamente da una crocetta disegnata sulla casella
rettangolare del controllo.
OptionButton pulsante di selezione multipla, consente di scegliere una possibilità
fra molte. Questi pulsanti vengono normalmente usati in gruppo e, di tutto il
gruppo, è possibile sceglierne uno solo.
ListBox o lista o casella di riepilogo, consente di selezionare una possibilità da una
lista. La lista può essere impostata a livello di programmazione o durante
l’esecuzione del programma; se la lista è più lunga di quanto è visualizzabile sullo
schermo compare alla sua sinistra una ScrollBar che ne consente lo scorrimento.
ComboBox o casella combinata; è come la precedente ListBox ma prende meno
spazio (un rigo solo) quando è chiuso. Il controllo possiede un pulsantino
triangolare che consente di aprirlo e fargli assumere l’aspetto tipico della lista.
HscrollBar e VscrollBar. Le barre di scorrimento consentono di spostarsi tra i vari
elementi di un elenco o all'interno di informazioni. Indicano inoltre la posizione
corrente all'interno del documento. È possibile utilizzare una barra di scorrimento
come dispositivo di input o come indicatore di velocità o quantità, ad esempio per
controllare il volume di un gioco o per visualizzare il tempo trascorso in un
processo
Timer è uno dei controlli che è sempre invisibile. Il suo compito è quello di
generare un evento ad ogni prestabilito intervallo di tempo.
DriveListBox (casella di riepilogo delle unità) viene
utilizzato per visualizzare un elenco di tutte le unità disco valide nel sistema in uso.
È possibile creare finestre di dialogo che consentano di aprire un file selezionato da
●
●
●
●
●
●
●
un elenco dei file contenuti in una delle unità disponibili
DirListBox o casella di riepilogo delle cartelle o directory. Viene usato insieme al
controllo precedente.
FileListBox o casella di riepilogo dei file. Viene usato insieme ai due controlli
precedenti allo scopo di selezionare un file da una directory su un disco.
Shape (forma) è un controllo di tipo grafico visualizzato come rettangolo, quadrato,
ovale, cerchio e come rettangolo o quadrato con angoli arrotondati. Può avere o
essere privo del bordo e del colore di riempimento.
Line (linea) è un segmento congiungente due punti sullo schermo; lo spessore e il
colore possono essere variati a piacimento.
PictureBox e Image Il controllo PictureBox (casella immagine) consente di
visualizzare un elemento grafico da un file in formato bitmap, icona, metafile,
enhanced metafile, JPEG o GIF. Il controllo Image è identico tranne che meno
spazio in memoria, è più veloce ma possiede alcuni metodi e proprietà in meno.
Data o controllo gestione dati fornisce accesso ai dati memorizzati in database di
qualunque tipo. Il controllo Data consente di spostarsi da un record all'altro e di
visualizzare e gestire i dati dei record. È il controllo sicuramente più complesso che
ci sia in quanto, da solo, costituisce uno dei più completi sistemi di gestione dei
dati.
OLE (contenitore OLE) consente l'aggiunta di oggetti inseribili nei form delle
aplicazioni. Il controllo contenitore OLE consente di eseguire applicazioni o
comandi DOS o di Windows nella propria finestra.
I sopraelencati controlli standard o intrinseci, possono venire usati direttamente all’interno
di form ma, spesso, vengono usati anche per costruire altri controlli esterni. Questi ultimi,
cioè i controlli esterni, sono quelli che risiedono su disco in file con estensione *.ocx.
Fra i controlli esterni più noti vale la pena di menzionare i seguenti:
●
Il
controllo CommonDialog (finestre di dialogo comuni) fornisce un gruppo di finestre
di dialogo standard per l'esecuzione di operazioni quali l'apertura (finestra Apri) e il
salvataggio di file (finestre Salva e Salva con nome) l'impostazione della stampa
(finestra Stampa) e la selezione di colori e tipi di carattere. Il controllo consente
inoltre di visualizzare la Guida in linea di Windows.
●
●
●
Il
controllo Multimedia MCI (MCI multimediale) o MMControl gestisce la
registrazione e la riproduzione dei file multimediali sulle periferiche MCI (Media
Control Interface). È costituito da un insieme di pulsanti di comando che inviano
comandi MCI a periferiche quali schede audio, sequencer MIDI, unità CD-ROM,
lettori CD audio, lettori videodisc e videoregistratori. Il controllo MCI è capace,
inoltre, di riprodurre i file video per Windows (*avi).
Il controllo MSComm (comunicazioni), invisibile a tempo di esecuzione, fornisce
alle applicazioni che lo usano quanto serve per le comunicazioni seriali,
consentendo la trasmissione e la ricezione di dati tramite una porta seriale. La porta
seriale è una delle porte di comunicazione usata da Windows per il collegamento di
macchine e dispositivi esterni al calcolatore; tramite essa i calcolatori possono
collegarsi ad un mouse, un modem, tra loro, ecc…
Il controllo MSFlexGrid consente di visualizzare ed eseguire operazioni con i dati di
tabelle. Con esso si possono eseguire operazioni di ordinamento, unione e
formattazione di tabelle contenenti sia testo che immagini. Il suo aspetto e le sue
funzioni sono quelle di un foglio di calcolo.
●
●
Il controllo Internet Transfer
(trasferimento Internet), invisibile a tempo di esecuzione, realizza due modi di
collegarsi (protocolli) a Internet, il protocollo HTTP (HyperText Transfer Protocol)
e il protocollo FTP (File Transfer Protocol). Il protocollo HTTP consente di
effettuare la connessione ai server World Wide Web per visualizzare documenti
HTML. Il protocollo FTP consente di accedere ai server FTP per scaricare e
caricare file. È possibile utilizzare le proprietà UserName e Password per accedere
a server privati che richiedono l'autenticazione. In alternativa, è possibile effettuare
la connessione a server FTP pubblici e scaricare file.
Il controllo RichTextBox (casella di testo RTF), dall’aspetto simile al controllo
TextBox, consente di immettere e modificare testo, con funzioni di formattazione
avanzate rispetto a quelle fornite dal normale controllo TextBox. Il controllo
●
●
RichTextBox dispone di molte proprietà utilizzabili per dare forma a qualsiasi parte
di testo presente nel controllo. Le sue proprietà consentono di applicare, al testo in
esso contenuto, il grassetto o il corsivo, di modificarne il colore e di creare elementi
in apice o in pedice. È inoltre possibile modificare la formattazione dei paragrafi,
impostando rientri a destra e a sinistra, nonché rientri sporgenti.
Il controllo MSChart è un controllo grafico di visualizzazione di dati in forma di
istogramma o diagramma cartesiano. Il controllo è capace di rappresentazioni molto
diverse fra loro come i diagrammi a torta, diagrammi tridimensionali, ecc… I dati
possono essere immessi direttamente o importandoli da un foglio di calcolo o da
una matrice.
Il controllo TabStrip consente di raggrup-pare
visivamente una serie di controlli fra loro in relazione. Nel titolo di ciascuna scheda
si specifica il nome della stessa; ognuna di queste schede può essere selezionata per
ottenere la visualizzazione e l’entrata in funzione del suo contenuto.
Molti altri controlli sono disponibili sia da parte della Microsoft sia da parte di terze parti.
Molte aziende basano la loro vita sulla produzione di controlli specifici per le funzioni più
diverse; alcuni di questi sono delle applicazioni intere. I controlli sono i "mattoni" con cui
si costruiscono le applicazioni e per questo un’azienda informatica può scegliere di
produrre applicazioni dirette all’utente finale usando i controlli prodotti da altri o, in
alternativa, produrre controlli per altri programmatori. Ovviamente la produzione di
controlli richiede il possesso di conoscenze e tecnologie di livello superiore, tuttavia questi
possono, attualmente, essere prodotti sia in Visual C++ sia in Visual Basic che in Visual
Java++.
Una applicazione per iniziare
Se Visual Basic è stato installato correttamente, selezionando il programma dalla barra
delle applicazioni, il programma dovrebbe partire mostrando la finestra di inizio
(NuovoProgetto) che viene riportata nella figura. Si scelga, nella scheda Nuovo l’opzione
EXE standard e si faccia click sul pulsante Apri.
Visual Basic preparerà una form del tipo finestra di dialogo e la presenterà, vuota, sullo
schermo all’interno di una finestra bianca dal titolo Progetto1- Form1 (Form). A fianco,
sia a destra che a sinistra, vi saranno altre finestre aperte. A sinistra dello schermo è aperta
una finestra dal titolo Generale contenente una barra verticale piena di strumenti cioè di
icone referentesi ai controlli standard di Windows. A destra dovrebbero essere aperte
almeno due finestre una dal titolo Progetto – Progetto1 e l’altra Proprietà – Form1.
Spegnete quelle in più e, se quelle necessarie non sono presenti, cercate nella barra degli
strumenti superiore le diciture Gestione Progetti e Finestra Proprietà facendo click sui
relativi pulsanti.
Sulla
barra degli strumenti laterale di sinistra (intitolata Generale) fare click su
CommandButton, quindi ci si sposti su Form1, dove, facendo click con il pulsante sinistro
e tenendolo premuto fino a tracciare un rettangolo, come nella figura seguente, si rilascerà
il pulsante del mouse sull’angolo in basso a destra dello stesso rettangolo.
In maniera analoga, si trasporti una Label dalla barra strumenti sulla Form1 sotto il
pulsante posizionato prima.
Alla fine di questa operazione la Form1 deve avere l’aspetto della figura seguente.
Posizionare, ora, il mouse sulla Form1 ed eseguire un rapidissimo doppio-click: comparirà
una finestra di testo contenente una parte della seguente scritta che va completata come di
seguito:
Private Sub Form_Load()
Label1.Caption = " Non hai premuto niente"
End Sub
Si digiti tutto in minuscolo, non
appena si andrà a capo, se si è battuto tutto correttamente il Visual Basic trasformerà i
capolettera in maiuscolo a conferma del fatto che tutto è in ordine.
Sulla finestra dove si sta digitando il codice vi sono due ComboBox (caselle combinate);
in quella di sinistra è scritto Form1, aprite quella di destra dove è scritto Load e scegliete
dalla lista che compare la voce Click.
Deve comparire l’intestazione
del seguente codice che completerete:
Private Sub Form_Click()
Label1.Caption = "Hai fatto click sulla Form"
End Sub
Nella finestra Proprietà-Progetto1 si faccia doppio-click sull’icona di Form1 per far
ricomparire la finestra della form.
Si esegua un doppio-click sul pulsante Command1 e, nella finestra del codice che così
compare si digiti:
Private Sub Command1_Click()
Label1.Caption = "Hai premuto il pulsante"
End Sub
Si ritorni sulla finestra di Form1.
Si prema il tasto F5 o, se si vuole, nella barra degli strumenti di Vb, sotto la voce Esegui
del menu, si faccia click con il mouse sul segno di avvio (segno di triangolo).
Il programma andrà in esecuzione immediatamente.
Per prova, si faccia click sulla form e in alternativa sul pulsante: si vedrà la scritta di
risposta del programma che avete scritto.
Per interrompere il programma in esecuzione si può fare click sul pulsante di arresto o fine
di VB (il pulsante quadrato sotto la scritta Esegui del menu) o sul pulsante con croce sulla
barra del titolo di Form1.
La programmazione a eventi in Windows
In windows tutto è determinato dal succedersi degli eventi.
Quando un utente del programma esegue un doppio click sull’icona del programma stesso
o quando l’utente avvia il programma, in qualsiasi altro modo lo faccia, Windows riceve il
messaggio di avvio dell’applicazione quindi in successione, nella Form principale
dell’applicazione, si verificano i seguenti eventi le cui azioni possono essere decise dal
programmatore:
1. Inizialize
2. Load
3. Resize
4. Activate
5. Paint
Se la Form contiene dei controlli come, per esempio, un pulsante di comando e una casella
immagine l’ordine degli eventi è:
1. Inizialize
2. Load
3. Resize
4. Activate
5. GotFocus del Tasto
6. Paint
7. Paint della Picture
Alla luce della sequenza degli eventi, il programmatore, può decidere per esempio di
introdurre durante l’evento Inizialize i valori iniziali di variabili che saranno utilizzati
durante l’evento Load.
Durante l’esecuzione di Load, si possono decidere e impostare le proprietà dei controlli
contenuti nella form o della form stessa ma non si possono eseguire metodi sui controlli
contenuti in quanto essi vengono attivati più tardi così come risulta dall’elenco precedente.
D’altro canto, l’evento Load precede la visualizzazione della Form sullo schermo che
avviene per prima tramite il ridimensionamento della stessa (evento Resize) seguito dalla
sua attivazione tramite l’evento Activate e, infine, l’evento Paint conclude, tramite il
tracciamento grafico, la presentazione visiva della Form stessa.
Si noti come i controlli eventualmente presenti sulla form vengono tracciati e attivati
comunque dopo l’attivazione della form.
Ne consegue che, per esempio, il tentativo di tracciare una linea su una PictureBox durante
l’evento Load di una form risulta inefficace in quanto la PictureBox sarà creata molto più
tardi e soprattutto il suo evento Paint sarà l’ultimo a essere eseguito.
Ovvero, qualsiasi disegno sulla PictureBox deve essere eseguito durante o dopo il suo
evento Paint. In caso diverso il disegno eseguito sarà cancellato dallo stesso evento Paint.
Terminato che sia il caricamento e l’attivazione nonché il disegno della form, la stessa
form e i controlli in essa contenuti restano in attesa di eventi provocati dall’utente o
dall’hardware o anche dallo stesso software.
Il compito del programmatore è quello di prevedere, progettare e programmare quanto
deve essere eseguito in conseguenza degli eventi che saranno attivati durante l’esecuzione
dell’applicazione.
Diventa pertanto evidente l’analisi seguente del programma del paragrafo precedente:
1. durante il caricamento della form il contenuto dell’etichetta (Label1) viene
impostato a "non hai premuto niente"; nessuna azione è prevista per gli eventi che
precedono o seguono il caricamento della form;
2. l’applicazione, terminata la sua attivazione, resta in attesa degli eventi futuri fra i
quali solo per due di essi è prevista una reazione;
3. se l’utente esegue un click sul tasto (Command1) il contenuto dell’etichetta viene
impostato a "hai premuto il pulsante"
4. se l’utente esegue un click sulla form il contenuto dell’etichetta viene impostato a
"hai fatto click sulla form";
5. non è stabilito a priori quante volte l’utente debba provocare le azioni (3) e (4)
pertanto queste saranno eseguite ogni qualvolta l’utente deciderà di provocarle e
fino a quando non farà click sul pulsante di chiusura;
6. quando l’utente farà click sul pulsante a croce della barra del titolo saranno eseguiti
gli eventi Unload e infine Terminate; il controllo dei messaggi e degli eventi tornerà
alla finestra contenitore la quale genererà, per se stessa, un evento Paint, che servirà
a ridisegnare l’intera finestra padre provocando, nell’utente, l’impressione che la
finestra dell’applicazione venga chiusa.