Newsgroup: it.comp.lang.visual-basic
Titolo: Errore 401

Can't show non-modal form when modal form is displayed
Che vuol dire ? Come si elimina ? E' la prima volta che mi capita un errore
simile ... se avvio il progetto non compilato funziona tutto ok, se lo avvio
compilato mi da questo errore ... come faccio ?
grazie
Vincenzo

 ha scritto nel messaggio
news:oUv48.26495$hi.6...@news1.tin.it...

Stai aprendo due form contemporaneamente una vbmodal e una no.
Posta la parte di codice che da questo problema e vedremo cosa fare....
Ciao
--
Timothy Redaelli

come cosa vuol dire?   :-)))
vuol dire che hai visualizzato un form modale, e che prima di poter
visualizzare un form non-modale, devi prima chiudere il
primo........altrimenti che modale sarebbe?!?!
dovresti visualizzare il form non-modale come modale, cosě risolvi il
problema.......
mi sembra strano che da VB non ti dia quel messaggio, mentre dall'EXE
sě.....sei sicuro?
--
Damiani Liborio Igor
idam...@hotmail.com
 - 
igor.d...@light.it
http://www.igordamiani.it
ICQ : 11847262

 sě.....sei sicuro?
Sicurissimo, se lo avvio con il comando "run" prima di compilarlo funziona
benissimo, se lo avvio compilato si blocca su quell'errore.
Vincenzo

 ha scritto nel messaggio
news:a2u2b2$137l0l$1...@ID-87006.news.dfncis.de...

IN UN EVENTO FORM_LOAD
On Error Resume Next
GetWindowsDirectory dirwin, Len(dirwin)
Text1 = dirwin
Text1 = Text1 & "\"
pathdirwin = Text1
nomefile = pathdirwin & "file.fil"
If Not (Dir(nomefile) = "file.fil") Then
    a = MsgBox("Primo avvio ...", , "WELCOME")
    Open nomefile For Output As #1
    Write #1,
............................................................................
....
    Close #1
End If
Open nomefile For Input As #1
Input #1,
............................................................................
.
Close #1
tent = 0
If Err Then
    a = MsgBox("Impossibile eseguire il programma", vbCritical, "Errore
fatale")
    End
End If
Non capisco che centra i form modali e non ...
Vincenzo

Ho capito l'errore, io pensavo che la funzione msgbox fermasse il programma
invece andava oltre ... ho inserito "on error resume next" anche nella
routine controllata da un timer ed ho risolto.
Grazie
Vincenzo



 ha scritto nel messaggio
news:TZy48.27133$Rv3.9...@news2.tin.it...


 ha scritto nel messaggio
news:MZy48.27132$Rv3.9...@news2.tin.it...

Secondo me stai facendo un pasticcio :)
Le msgbox sono modali, quindi fermano il programma.
Una On Error Resume Next quasi sempre è una cattiva idea se non è al più
presto seguita da un On Error Goto 0.
Ciao.


Se nel form load c'è una msgbox, il timer presente nel form si attiva lo
stesso generando l'evento ... quindi la msgbox non ferma tutto il codice.
Vincenzo

 Ciao.
Il timer ( prima riga di codice timerxx.enabled = false ) lo uso per far
eseguire una serie di operazioni necessarie subito dopo l'evento form_load
ma che se immesse nel form_load mi generano gli errori piů svariati.
Se nel form_load c'č una msgbox l'evento timer continua a funzionare senza
aspettare la chiusura della msgbox, cosa da cui deduco che la msgbox non


 gli errori più svariati.
Elimina il timer (che rischia di crearti un sacco di guai difficilmente
diagnosticabili) e sposta quelle istruzioni nella form_activate, ponendole
dietro allo schermo di una variabile booleana statica che eviti di passare
per quella routine più di una volta.
Esempio:
Private Sub Form_Activate()
   Static bGiàFatto as boolean
   If not bGiàFatto Then
      bGiàFatto = true
      ' qui metti le tue istruzioni
   End If
End Sub
Ciao
*Roby*


ti ringrazio, non avevo mai usato il form_activate come evento, funziona
tutto ok ed è sparito quell'errore incomprensibile delle form modali, unico
problema e che l'effetto estetico è peggiorato visto che il ritardo di
qualche decimo di secondo fra le operazioni era bello, esiste un comando che
ferma il codice per un tempo stabilito o devo creare un ciclo do until
sfruttando l'orologio di sistema ?
Vincenzo

 ferma il codice per un tempo stabilito
Puoi usare l'api Sleep:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Per chiamarla basta dire quanti millisecondi di pausa vuoi. Ad esempio:
Sleep 1000 ' un secondo di attesa
Ciao
*Roby*

 stesso generando l'evento ... quindi la msgbox non ferma tutto il codice.
Questo è vero.
I timer non si fermano nemmeno con finestre modali.
Non usando timer (per questo ed altri mille effetti collaterali) non mi ero
nemmeno posto il problema.
Ciao

 ha scritto nel messaggio
news:FAT48.30167$hi.7...@news1.tin.it...

GRAZIE