Newsgroup: it.comp.lang.visual-basic
Titolo: chiudere un form

Cari membri del newsgroup,
  perdonate la domanda banale, ma ho riscontrato una piccola pecca nel mio
primo programma e siccome non ne ho trovata la soluzione, e allo stesso
tempo sono certissimo che ci sia, vi sottopongo il mio problemino.
Dunque, ho un form, pigiando su un bottone, nascondo il primo form e mostro
il secondo, pigiando su un bottone di quest'ultimo form il programmino si
chiude, sparisce anche il secondo form ma... sulla barra di avvio rimane
l'applicazione iconizzata; sono pigiandoci sopra, quest'ultima sparisce. Tra
i metodi del form, non ho trovato niente che fa al caso mio, cioè che chiuda
un programma facendo sparire l'icona sulla barra d'avvio, sapete aiutarmi?
Come vedete il problema è banale, ma tra i metodi non ho proprio trovato
niente.
Grazie per l'attenzione... ciao!
Filippo

Com'è che fai sparire il primo form?
Prova UnLoad <nomedelform>
Tipo UnLoad Form1
ByeZ
SebaMix


Niente da fare... suggerimenti? Ho implementato l'istruzione all'interno
dell'evento CLICK del bottone del secondo form (suppongo intendessi questo),
ma non ha avuto nessuna conseguenza, per quanto riguarda la questione che ho
esposto. Per quanto ne so, dopo che ho letto il tuo consiglio ho consultato
la guida in linea di VB, l'evento UNLOAD scarica solamente il form dalla
memoria. Per meglio chiarire il piccolo difetto del programma, si apre
un'icona sulla barra di avvio per ogni form (2), alla chiusura
dell'applicazione, se ne chiude solo una...
Ciao!
Filippo

Posta il codice che ci dò un'cocchiata!

 wrote in message
nSJW5.27518$hk4.1...@news.infostrada.it...

...Concettualmente il programma dovrebbe terminare da dove è iniziato!
In breve: per la poca esperienza che ho, ti posso dire che il form
principale (main, 1 ec..) è quello che sioccupa di caricare e scaricare
componenti, form secondari etc.
se non ho capito male, tu  nascondi il form principale (frm1.visible= false)
e mostri il secondario; poi pretendi di chiudere tutto senza scaricare
niente!
prova a scaricare i singoli form che hai caricato (se hai caricato solo
form) e successivamente chiudere il programma;
in realtà il metodo unload non dovrebbe essere fondamentale in VB, ma
risulta essere in pratica una buona introduzione al comando end.... che in
ogni caso dovrà essere eseguito richiamando il form di avvio (che sia esso
nascosto oppure no).
spero di essere stato chiaro.
Ciao

> Posta il codice che ci dò un'cocchiata!
Dunque, il programma è molto corto e ti riporto le parti essenziali, o
quelle che comunque ritengo tali. Il form di avvio contiene due bottoni, i
quali eseguono all'evento click esattamente la stessa cosa:
frm1.hide ' nasconde il form d'avvio
frm2.show ' mostra il secondo e ultimo form
Il secondo form contiene un bottone, al cui evento click corrisponde la
chiusura del programma:
end ' chiude l'applicazione
Inserendo l'istruzione UNLOAD prima della chiusura, non cambia assolutamente
niente. O per meglio dire, probabilmente i form (dico "i" poiché ho provato
a scaricare entrambi i form, giusto per curiosità) vengono scaricati dalla
memoria, ma il problema non si risolve...
Ciao!
Filippo

 risulta essere in pratica una buona introduzione al comando end... CIOE'?
Ciao e grazie!
Filippo

 prima dell'istruzione END, nell'evento CLICK del secondo form.
il meto è semplice ed in teoria efficace, anche se non del tutto corretto!
con questo sistema (ripeto teoricamente) l'applicazione dovrebbe chiudersi
senza lasciare traccie... ma nel tuo caso non è cosi!
Se durante l'esecuzione del programma richiami librerie esterne, è possibile
che nel terminare l'esecuzione dal form secondario rimangano traccie tel
task in oggetto.
Prova in questo modo:
unload form1 (nel'evento click del pulsande di comando del secondo form)
ora il programma si andrà a cercare il codice scritto nell'evanto
form_unload di form1 (form1_unload)
In quel punto scrivi le istruzioni necassarie alla terminazione del
programma.

 programma.
Come "istruzioni necessarie" intendi "end", ho provato. Se Intendi "unload
frm2" e poi "end", ho provato anche così.
Non per essere scortese, ci mancherebbe, ma ciò che voglio è una cosa
praticamente indispensabile e presente in ogni programma che chiunque abbia
mai usato, è davvero una cosa difficile? Bada, la mia non è scortesia, o
rabbia, è solo stupore; non far caso alle parole troppo dirette, soltanto
non riesco proprio a capire come mai non siamo riusciti a trovare una
soluzione... E' forse perché i programmatori VB esperti usano un metodo di
programmazione completamente diverso? Quale?
Ciao e grazie!
Filippo

 frm1.hide ' nasconde il form d'avvio
nel codice del 1° form.


 ha scritto nel messaggio
news:jzMW5.28359$hk4.1...@news.infostrada.it...


 spero di esserti stato utile
Oh, è una sciocchezza, l'ennesima variante del "rivelatore di stupidità. Nel
primo form c'è una label: "Sei stupido?", sotto ci sono due bottoni, "Sì" e
"No", posizionandosi su "No", la sua caption varia in "Sì" e varia quella
dell'altro bottone in "No", in modo da non poter avere scelta e pigiare "Sì"
in ogni caso. Nel secondo form, niente di particolare, una sorta di saluto e
un tasto con caption:"Esci" per uscire dal programma. Se ci tieni ti mando
l'eseguibile o il progetto addirittura, così mi puoi dire qualcosa...
Un momento... non sarà perché ho "VB 4 professional"? In ogni caso, saluti a
tutti, se vuoi il progetto fatti sentire, qui o privatamente, sono poche
righe di codice.
Ciao a tutti e a presto! ! ! ! !
Filippo

 ha scritto nel messaggio
news:l4RW5.30526$hk4.1...@news.infostrada.it...


 spero di essere stato chiaro.
E` da qualche giorno che sul ng girano strane voci su come si termina
*normalmente* un programma e questo thread mi sembra abbastanza
significativo.
Dato che io non ho mai trovato, nei fatti, contraddizione a quanto recita la
guida:
"L'istruzione End rappresenta un metodo per forzare l'interruzione del
programma. Per interrompere normalmente un programma Visual Basic, è
necessario scaricare tutti i form. Il programma verrà chiuso quando non vi
sono altri programmi con riferimenti attivi agli oggetti creati da moduli di
classe pubblici del programma e quando non vi è più codice in esecuzione."
vi chiedo, per favore, di soddisfare la mia curiosita` riguardo l'uso di
"End" come metodo *normale* per la chiusura di un programma Visual Basic:
dove o da chi avete appreso quest'uso? (in quali testi o frequentando quali
corsi?)
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

Una possibile soluzione per scaricare tutti i form:
Option Explicit
Public Function ScaricaTuttiIForms() As Boolean
    Dim cnt As Long
    Dim i As Long
    On Local Error Resume Next
    cnt = Forms.Count - 1
    For   i = cnt To 0 Step -1
        Unload Forms(i)
    Next i
    ScaricaTuttiIForms = (Err.Number = 0)
End Function
Se ci sono riferimenti incrociati fra i form o fra variabili oggetto e'
possibile che qualche form non si scarichi. In questo caso occorre testare
gli eventi Terminate degli oggetti.
Bisogna anche stare attenti a non chiamare controlli presenti su un form
dopo averlo scaricato perche' lo si ricarica nuovamente.
Ciao
Aldo