Het gebruik van het commando
End om een programma af te sluiten is geen goed idee. Er zijn een heleboel controls die geladen worden in een VB programma en die blijven in het geheugen hangen als je het programma afsluit met
End. Je krijgt daardoor geheugenlekken die het geheugen van je PC zwaar belasten en voor vreemde toestanden, zelfs het blokkeren van je PC, kunnen leiden.
Het is beter om het Unload event van het Form te gebruiken en daarin eventueel een aantal controls uit het geheugen te halen.
In elk form van VB is er een extra event dat geactiveerd wordt als je het form wil sluiten. Dat sluiten kan door een commandbutton waarachter de opdracht 'Unload Me' zit, of via het knopje met het kruisje rechtsboven in de titelbalk, maar
ook door een andere oorzaak.
In dit event kan je acties ondernemen zoals een vraag stellen of de gebruiker wel degelijk het form wil sluiten, of de ingevoerde informatie bewaard moet worden, enz...
Het event heeft een parameter Cancel die, afhankelijk van de waarde die je hem in het event toekent, bepaalt of de unload zal uitgevoerd worden of niet. Er zit ook een tweede parameter aan verbonden die aangeeft waardoor de unload gevraagd werd. De unload kan namelijk op verschillende wijzen aangevraagd zijn.
Hieronder een voorbeeld van een dergelijke event-sub gekoppeld aan het Form.
Ik heb in commentaar de verschillende mogelijke oorzaken van het event opgesomd met hun respectievelijke waarde waarop je kan controleren.
Als het programma door Windoze gesloten wordt, bij het afsluiten van het systeem bijvoorbeeld, dan kan je aangeven dat er geen vraag gesteld moet/mag worden of dat het programma automatisch de gegevens moet bewaren, enz...
Dit is VB6 code...
Code:
[FONT="Courier New"]Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
[COLOR="SeaGreen"] '--------------------------------------------------------------
' UnloadMode: Diverse oorzaken van unload
'--------------------------------------------------------------
' vbFormControlMenu 0 De gebruiker heeft op het knopje met het kruisje
' in de titelbalk van het form geklikt.
' vbFormCode 1 Het Unload commando is vanuit de programmacode gegeven.
' vbAppWindows 2 Het Microsoft Windows operating system wordt afgesloten.
' vbAppTaskManager 3 Het Microsoft Windows Taakbeheer sluit de toepassing.
' vbFormMDIForm 4 Een MDI kind-form wordt gesloten omdat het MDI form gesloten wordt.
' vbFormOwner 5 Een form wordt gesloten omdat zijn eigenaar (van waaruit
' het form gestart werd) afgesloten wordt.
'--------------------------------------------------------------[/COLOR] Dim intAntwoord As Integer
If (UnloadMode = vbFormControlMenu) Then
intAntwoord = MsgBox("Bent u zeker dat u wil stoppen?", vbQuestion + vbYesNo, "Programma afsluiten")
If intAntwoord = vbNo Then
Cancel = True
End If
End If
End Sub[/FONT]