Hej Pice of cake. Använd Instället: Hej Tyvärr, ingen av varianterna funkar, programmet tvärhänger sig. Hur ser din kod ut i queryUnload? Nu gjorde jag så här: Hej Hmm ... En liten fundering bara: Du skrev att alla forms pekade på din UnloadForm-procedur? Kan det inte vara att när man stänger ett, så stänger det nästa, som innan det kan bli "stängt" pekar på proceduren som stänger alla forms, som vill stänga det första, som redan håller på att stänga o s v ...? Jag kan ha fel, det är bara en tanke som jag överlåter åt andra att verifiera. Har du något MDI formulär? Jag har inga MDI formulär alls. Du kan ju testa: Hej Hej<br> Kontrollera om det är i UnloadForms() den låser sig: Tydligen är det så att den anropar unload på alla forms, skumt, men nu fungerar det, det fanns en Unload Me på ett formulär då kraschade rubbet. Whoooo ! En liten analys.Vilka forms är laddade? LÖST
Jag har problem med min applikation, när folk stänger av den så hänger den sig, jag har kommit fram till att det är när Form_QueryUnload körs och där kör jag unload på alla forms, om en inte form finns så kraschar programmet.
Finns det något bra sätt att bara ladda ur de forms som har blivit laddade?
Anna-KarinSv: Vilka forms är laddade?
<code>
Dim frmForm As Form
For Each frmForm In Forms
Unload frmForm
Next
</code>
Ska fungera klockrent.Sv: Vilka forms är laddade?
On Error Resume Next
Hade också funkat,men Andreas förslag är nog det mest korrekta.
mvh
SvenSv: Vilka forms är laddade?
Det här problemet verkar existera hos alla som har testkört den.
Anna-KarinSv: Vilka forms är laddade?
vad hände om du stoppar in enbart ett
<code>
End
</code>
där istället?Sv: Vilka forms är laddade?
Private Sub Form_Unload(Cancel As Integer)
checkRegister.UnloadForms
End Sub
I checkregister så har jag gjort så här:
Sub UnloadForms()
On Error Resume Next
Dim frmForm As Form
For Each frmForm In Forms
Unload frmForm
Next
End Sub
Alla formsen pekar på den här rutinen.
Jag testade att bara skriva End och det funkar, men är det rätt sätt, om det nu finns något sånt?
Anna-Karin.Sv: Vilka forms är laddade?
Enl expertern så skall man i varje forms Unload
Ha ex. Set Form1 = Nothing
så mitt förslag blir
End 'följt av
Set Form1 = Nothing 'osv i alla formar
DSSv: Vilka forms är laddade?
/EESv: Vilka forms är laddade?
Vad har du mer för kod i QueryUnload och Unload?
Om du adresserar ett formulär eller kontrol från något av Unload eventen, komer det att ladda formuläret.
Annars kan unload koden ställa till problem. Om den försöker lada ur sig själv från unload eventet. Kan skapa en evighets loop.
Du bör bara placera anropet i ditt huvudformulär. Inte i dina andra formulär. Kanske det som ställer till det.Sv: Vilka forms är laddade?
Det enda som finns i Unload är, har testat QueryUnload och Terminate, med samma resultat.
Private Sub Form_Unload(Cancel As Integer)
Shell_NotifyIcon NIM_DELETE, nid ' tar bort min ikon från systray.
checkRegister.UnloadForms
End Sub
Ett problem är ju att man kan stänga från alla formulär som finns, man är inte tvungen att gå tillbaka till startformuläret för att stänga.
Anna-Karin, tragglar vidare.Sv: Vilka forms är laddade?
<code>
Option Explicit
Private Busy As Boolean
Sub UnloadForms()
Dim frmForm As Form
If Busy Then
Else
Busy = True
For Each frmForm In Forms
Unload frmForm
Next
Busy = False
End If
End Sub
</code>Sv: Vilka forms är laddade?
Jag blir snart tokig, den koden fungerade inte den heller, programmet tokhänger sig, det enda som har funkat är att skriva End när jag stänger programmet.
Anna-Karin, sliter sitt hår.Sv: Vilka forms är laddade?
Testa Andreas kod med både hängsle och livrem
<code>
Option Explicit
Private Busy As Boolean
Sub UnloadForms()
Dim frmForm As Form
On Error Resume Next
If Busy Then
Else
Busy = True
For Each frmForm In Forms
Unload frmForm
Set frmForm = Nothing
Next
Busy = False
End If
End
End Sub
</code>
SvenSv: Vilka forms är laddade?
<code>
Option Explicit
Private Busy As Boolean
Sub UnloadForms()
Dim Count As Long
Dim frmForm As Form
If Busy Then
Else
Busy = True
For Each frmForm In Forms
Count = Count + 1
Debug.Print Count & ": " & frmForm.Name;
Unload frmForm
Debug.Print " OK!"
If Count > 100 Then
MsgBox "Över ger unload och kör End!"
End
End If
Next
Busy = False
End If
End Sub
</code>Sv: Vilka forms är laddade?
Anna-KarinSv: Vilka forms är laddade?
Analyser mera och berätta exakt vad du kom fram till
Vilket av förslagen använder du.
Kontiniuitet gäller
mvh
Sven
Ps lägg ett kol på Allmännbildningen jag vill se dig på top 10
DSSv: Vilka forms är laddade?
Jag = newbee, nyfiken, envis. Vet inte alltid bästa sättet att koda.
Jo felet var detta, att jag i ett form hade lagt Unload Me och då när jag sedan anropade min modul så kraschade det eftersom det körde unload me först, gick sen tillbaka och försökte att fortsätta stänga forms, vilket inte gick eftersom det nyss stängt sig själv.
Efter att ha lagt samma kod på alla ställen där man kan stänga så funkar det klockrent, jag ska skriva rent Andreas H's kod och använda den, men utan print grejerna då.
Anna-karin, tragglar vidare med vb.
ps
Ska försöka spotta upp mig, har ju bidragit med många frågor och de borde jag väl kunna svaren på.
ds.