Trapping the close event

Het is belangrijk voor het Liberty BASIC programma om te bemerken
wanneer de gebruiker een venster afsluit. Het klikken op het
afsluitkruisje of op de ALT+F4 toetsen combinatie zal een "EVENT" veroorzaken.
De programmeur kan zich op deze gebeurtenis voorbereiden.
Het programma dient zo ingericht te zijn dat wanneer een gebruiker probeert om een venster te sluiten,
het vervolg van het programma (program flow) geleid wordt
naar een "EVENT HANDLER" die door de programmeur is gespecificeerd.
Op die plaats kan het programma vragen om controle of het venster
werkelijk zou moeten worden gesloten en, daarbij één of andere soort schoonmaakbeurt
(sluiten van bestanden, INI-gegevens schrijven, een vlag plaatsen dat het venster, enz. open of gesloten is)
uitvoeren. De programmeur kan ervoor kiezen om een menu item of een aparte knop te maken
waarop een gebruiker kan klikken om het venster te sluiten,
maar de gebruiker zou de ook het afsluit kruisje ( X ) kunnen klikken
of de systeem knop voor sluiten kunnen gebruiken.
Dat zijn de gebeurtenissen (events) die door het trapclose statement worden opgevangen.

Het trapclose commando werkt met alle venstertypes.

Hier is het format voor trapclose:

 	#myWindow "trapclose [branchLabel]"

 	#myWindow "trapclose subLabel"

#myWindow "trapclose [branchLabel]"
Dit zal Liberty BASIC vertellen om de code bij [branchLabel] als gebeurtenismanager (event handler)
voor het venster met het handvat (de handler) #myWindow te gebruiken,
en aldaar de uitvoering van het programma voort te zetten
als de gebruiker probeert om het venster (zie hieronder buttons1.bas- voorbeeld) te sluiten.

Als de subroutine, subLabel als gebeurtenismanager, in plaats van een aftak etiket wordt aangetroffen,
wordt de genoemde subroutine uitgevoerd wanneer de gebeurtenis voor sluiten wordt teweeggebracht.
De handle-naam van het venster wordt overgezet naar de subroutine door Liberty BASIC.

Gebruik van de "event handler" in samenhang met het aftak etiket:

De trapclose code in het programma buttons1.bas ziet er als volgt uit:

    open "This is a turtle graphics window!" for graphics_nsb as #1

    #1 "trapclose [quit]"

    ' stop and wait for buttons to be pressed

    wait

En dan ziet de code die wordt uitgevoerd wanneer het venster wordt gesloten eruit als:

[quit]

    confirm "Do you want to quit Buttons?"; quit$

    if quit$ = "no" then wait

    close #1

    end

Bij gebruik van een subroutine manager (handler):

#myWindow "trapclose subroutine"
De trapclose code in het programma buttons1.bas zou er als volgt uit kunnen zien
als we een subroutine als handler zouden gebruiken:

    open "This is a turtle graphics window!" for graphics_nsb as #1

    #1 "trapclose Quit"

    ' stop and wait for buttons to be pressed

    wait

En dan ziet de code die wordt uitgevoerd wanneer het venster wordt gesloten eruit als:

sub Quit handle$

    confirm "Do you want to quit Buttons?"; quit$

    if quit$ = "no" then wait

    close #handle$

    end

    end sub