Newsgroup: it.comp.lang.visual-basic
Titolo: Un'aiuto su form

Ho questo problema.
Form1 partenza
Private Sub Form_Load()
    form1.show 1
    prosegue..........................
.........................
End Sub
---------------------
Form2
Private Sub Form_Load()
    esegue delle operazioni e poi vorrei che si chiudesse in automatico.
    ritorna su form1
End Sub

 End Sub

 End Sub
(Form2)
Private m_Activated As Boolean
Private Sub Form_Load()
    m_Activated=FALSE
    'non fare nient'altro - non puoi fare l'unload della Form durante la
Load
End Sub
Private Sub Form_Activate()
    If m_Activated Then Exit Sub
    Me.Show
    'metti qui il codice da eseguire
    Unload Me
End Sub
----------------------------------------------------------------------
Stefano Minardi
Zetesis: 
zet...@mclink.it
----------------------------------------------------------------------

 Load
sei sicuro ? il codice qui sotto va allegramente
form1:
Private Sub Form_Load()
    On Error GoTo errman
    Me.Print "ECCOMI"
    Form2.Show
    Unload Me
    Exit Sub
errman:
    MsgBox Error
End Sub
fatto e compilato, nessun msgbox. appare il form2, quando lo si chiude
termina l'exe. ovvio che ne' form1 ne' tantomeno "eccomi" non riesco proprio
a vederli.
ciao, a.

Beh, intanto non riesci a visualizzare le form, cosa che forse in genere uno
vorrebbe fare, dal momento che le ha create. Poi ti assicuro che fino a
pochi giorni fa una Unload Me in un Form_Load avrebbe generato un errore.
Forse hai un grandioso SP4 o forse la tua sintassi è un pochino diversa da
quella che uso io - 
p.es
.:
(a) nel codice di riferimento c'era la show modale di una form secondaria
che avrebbe dovuto chiudersi da sola, non la show non modale da parte di una
form che si chiude da sola lasciando la seconda nel limbo
(b) probabilmente se fai scatenare tutti gli step successivi alla load
l'evento viene superato ed è anche possibile fare l'Unload perché la form è
ormai stata costruita (l'evento non è bloccante per il codice sottostante di
VB)
Prova a ripetere l'esempio originale - dev'essere la form modale a fare
l'Unload di sé stessa.


 l'Unload di sé stessa.
form 1:
Private Sub Form_Load()
    'On Error GoTo errman
    On Error Resume Next
    Me.Show
    Caption = "ECCOMI"
    Form2.Show 1
    'Unload Me
    Exit Sub
errman:
    MsgBox Error
End Sub
form 2:
Private Sub Form_Load()
    Me.Show
    DoEvents
    Dim j
    For j = 0 To 999
        Caption = j
        DoEvents
    Next
    Unload Me
End Sub
all'unload del frm2 verrebbe generato l'errore "object was unloaded" (ide),
con l'exe -> "l'oggetto e' stato scaricato". basta il msgbox che avevo
messo. con resume next manco si percepisce.
nb -- il form1 se ne sta li' tranquillo in vista con "eccomi" mentre frm2
cicla. e resta solo alla fine del ciclo.
sia chiaro -- non volevo e non voglio essere polemico. mi aveva solo stupito
l'asserzione.
e cmq io, in un prg mio, cercherei di risolvere la situazione in un altro
modo, prob con qualche sub e meno aggrovigliamenti reciproci in momenti
delicati come load e show.
ciao, a.

Lungi da me fare della polemica! La questione č veramente di basso profilo,
ma non mi dispiace parlarne, perciň:
(a) Effettivamente l'unload non crea problemi se la form ha passato lo
stadio della Load - la Show (e magari il doevents) fa andare le cose in
questo senso: VB non č piů nella fase di Load anche se siamo ancora
nell'*evento* Load. Fino a qualche versione fa, neppure questo era
possibile.
(b) Se fai un resume next allora puoi fare tutto... Davo per scontato che il
problema da evitare fosse la *generazione* di un errore. Va da sé che se lo
intercetti e lo ignori va 'tutto bene'. Al solito, io intendevo attenermi al
codice del Nostro. Se ci mettiamo altre 10 righe comincia a fare il
cappuccino.
(c) Alludevo - ironicamente - ad un VB6 SP4, visto che il mio SP3 si
comporta diversamente
(d) Concordo pienamente sul fatto che non sia la cosa migliore da fare.
Proprio per questo (e per il problema che avevano le vecchie versioni di VB)
consiglio di usare Form_Activate a questo scopo.
