PDA

View Full Version : [VB6] Chiudere un programma


wingman87
02-07-2006, 15:01
Ho creato un programma con 4 form che mostro uno alla volta e nascondo con i metodi .hide e .show. Se chiudo subito il programma va tutto bene, se invece lo chiudo dopo aver aperto qualche altro form, anche solo uno, guardando nel taskmanager vedo che il programma è rimasto aperto, come faccio?

mynos79
02-07-2006, 15:36
Usa l' istruzione end per terminare un programma, non affidarti semplicemente al pulsante di chiusura form (X rossa) perchè chiude semplicemente il form senza scaricarlo dalla memoria ... come il comando hide() che serve solo a nascondere il form non a chiuderlo!
Quindi nel form principale, sia nell' evento terminate o unload del form che nel pulsante o menù che farà da Exit, ci metti l' istruzione end ...

wingman87
03-07-2006, 08:21
OK ho risolto, grazie, ho messo end a tutti gli unload. Ma quand'è che effettivamente scatta l'evento unload? Non quando uso il metodo Hide vero?

mynos79
03-07-2006, 08:49
No, il metodo Hide semplicemente nasconde dalla vista dell' utente un form già caricato in memoria (caricato nn tramite il metodo Show che semplicemente visualizza, ma caricato in modalità nascosta direttamente assieme al progetto).


Questo è invece il ciclo di vita generico di un form:

1) Initialize - L' oggetto Form è referenziato nel codice, Visual Basic inizializza le variabili di Form.

2) Load - Le proprietà o i controlli del Form sono referenziati, Visual Basic crea la window e i suoi controlli figli.

3) Resize - Il Form è diventato visibile (si verifica anche quando le dimensioni del Form cambiano).

4) Activate - Il Form è pronto per l' input dell' utente (si verifica anche quando il focus passa a un altro Form e poi torna al Form corrente).

5) Paint - Visual Basic richiede che il Form si aggiorni quando viene visualizzato la prima volta e quando un' altra window lo copre e poi lo rende nuovamente visibile. Si attiva solo se la proprietà AutoRedraw è False.

Ora o passa al punto 6) o prosegue al punto 7).

6) Deactivate - L' utente passa a un altro Form della stessa applicazione (torna al punto 4) ).

7) QueryUnload - Visual Basic chiede all' applicazione se deve scaricare il Form ora.

8) Unload - Visual Basic sta per scaricare il Form, è l' ultima possibilità per annullare l' operazione.

9) Terminate - Visual Basic sta per deallocare la memoria usata dal Form e distruggere le sue variabili.


Come vedi il ciclo-vita di un Form è molto complesso nel susseguirsi di eventi ... scrivere il codice giusto nell' evento giusto può portare l' applicazione ad essere molto potente e soprattutto ribusta in quanto è possibilie evitare errori di gestione Form (come ad esempio scrivere codice di verifica chiusura nell' evento Unload per prevedere o evitare che l' utente chiuda il Form quando magari ci sono ancora dei dati importanti da salvare; oppure negli eventi Resize e Paint per gestire la grafica qualora l' utente ridimensionasse il Form ...).