Newsgroup: it.comp.lang.visual-basic
Titolo: unload me e form con borderstyle=none

ciao ragazzi,
so che sembra un problema banalissimo, ma non riesco ad uscirne fuori.
Allora, ho una mia applicazione che non e' altro che un form con
borderstyle=0 none. Lo eseguo, e poi quando ha finito di fare delle
cosuccie, all'interno di una procedura che protrebbe essere
command1_click gli do un bel unload me.
Il problema, e' che lui fa tutto a dovere, ma alla chiusura windows mi
dice che questo programma ha eseguito un'operazione non valida e sara'
terminato!
La mia domanda e': come faccio a chiudere correttamente un form di
questo tipo? non va bene l'unload me?
grazie in anticipo a tutti
Ciao
Dade

 non va bene l'unload me?
Unload Me va benissimo, il problema e' senz'altro nella procedura in cui
scrivi Unload Me (forse Unload Me e' seguita da altre istruzioni?) o nella
procedura Form_Unload (forse in questa procedura tenti di accedere a
proprieta' del form oppure anche in questa ripeti unload me?).
Posta un po' di codice e vediamo :)
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

Lokar
colgo la palla al balzo e posto lo spezone di codice che sta prima
dell'unload me :)
Private Sub MSComm1_OnComm()
Dim RX
RX = MSComm1.Input
Buffer$ = Buffer$ & RX
Pos = InStr(Buffer$, Chr$(1))
Buffer$ = Mid$(Buffer$, Pos)
Pos = InStr(Buffer$, Chr$(3))
If Pos = 0 Then Exit Sub
Buffer$ = Mid$(Buffer$, 2, Pos - 3) 
Do
    Pos = InStr(Buffer$, Chr$(13))
    If Pos = 0 Then Exit Do 'il pacchetto e' finito
    Pacchetto = Mid$(Buffer$, 1, Pos - 1)
    Print #1, Pacchetto 'lo scrivo su file
    Buffer$ = Mid$(Buffer$, Pos + 1)
Loop
MSComm1.PortOpen = False
Close #1
unload me
End Sub
quando richiamo la unload me, sono sicuro che non ci sono piu' dati in
arrivo e, quindi, l'mscomm non dovrebbe richiamare l'evento oncomm.
Non ci sono timer che possano rompere le scatole o cose varie. Gli
unici oggetti sul form sono il controllo MScomm, il controllo Xini 1.3
(scaricato dal sito comune) e un frame x abbellire un po', oltre poi
ad una label che visualizza il messaggio Attendere prego (fa molto
windows :))))))     )
ciao e grazie per l'aiuto
Dade

 End Sub
Qui sei finalmente uscito! Un "hack" che mi viene in mente e' provare a
mettere l'istruzione Unload Me in una Sub a parte tipo:
Private Sub Termina()
    DoEvents
    Unload Me
End Sub
e poi richiamare Termina prima del End Sub dell'evento OnComm
Private Sub MSComm1_OnComm()
    'Codice
    Termina
End Sub
Il DoEvents della Sub Termina "dovrebbe" permettere all'evento OnComm di
terminare (e quindi di liberare l'oggetto MSComm) ed il successivo Unload Me
"dovrebbe" fare il suo lavoro ;)
Ovviamente se qualcuno conosce un metodo piu' elegante di risolvere la
questione, sarei contento di conoscerlo quanto Dade :)
hth,


Lokar
Ciao Lokar,
scusami se ti stresso ancora... ho fatto esattamente cio' che mi hai
detto, ma purtroppo in uscita ottengo lo stesso errore. Non mi
comporta nessun problema, e' solo che e' poco elegante... Hai altre
idee? 
Grazie 1000 di tutto
Ciao
Dade

 elegante... Hai altre idee?
Innanzi tutto, per caso hai del codice nella sub Form_Unload? Se si, quale?
Secondo poi, giusto per provare modifica la Sub Termina come segue:
Private Sub Termina()
   Dim tInit As Date
   Const tTimeOut As Variant = #12:00:05 AM#
   tInit = Now
   Do While Now < tInit + tTimeOut
      DoEvents
   Loop
   Unload Me
End Sub
In questo modo prima di scatenare l'unload del form, passano 5 secondi.
Questo giusto per verificare se il problema risiede nel fatto che il
controllo MSCOMM e' ancora in uso o meno.
Se lo e', vedremo di trovare una soluzione piu' elegante.


Lokar
purtroppo anche cosi' viene generato lo stesso identico errore! Ora mi
viene da pensare: non e che il controllo xini ha bisogno di qualche
forma di chiusura? E' una mia riflessione, ma sarebbe assurdo, visto
che se l'ho usato anche in un form mdi e non da problemi alla chiusa!
Mah! sto iniziando a strapparmi i capelli :) 
se vuoi Lokar, posso mandarti anche i source del programma in e-mail,
ma non vorrei essere di troppo peso
ciaooo 
Dade

 ma non vorrei essere di troppo peso
Spara :)


 (scaricato dal sito comune)
Cosa è Xini? L'ho cercato sul sito comune e non l'ho trovato, ma per vedere
se dipende da quello bisogna sapere che controllo è.
Che Service Pack hai sul tuo Visual Basic?
Ciao
*Roby*
