Graphic commands

Zie ook: Understanding Syntax - how to use literals and variables in commands.

Nieuw voor Liberty BASIC 4:  schuifbalken (scrollbars) kunnen aangezet en uitgezet worden, 
en de range van de schuifbalk kan worden ingegeven.  
Zie hieronder de commando's voor HORIZSCROLLBAR en VERTSCROLLBAR.  
De schuif op schuifbalk opent nu bovenaan van verticale schuifbalken en 
aan de linkerzijde voor horizontale schuifbalken, in plaats van in het midden 
zoals zij in vorige versies van Liberty BASIC wel deden. 
Ook nieuw: aan de tekeningsegmenten kunnen namen worden gegeven. 
In vorige versies van Liberty BASIC, waren segment id's getallen die door Liberty BASIC werden toegewezen. 
Voor meer info bij het gebruiken van genoemde tekeningsegmenten, 
zie het FLUSH commando, hieronder.

Nieuw Liberty BASIC 4.01: ondersteuning van events voor de middelste muisknop. 
Zie hieronder het commando "when event". 

Het afdrukken (hard-copy) van de grafische plaatjes is nu schaalbaar. 
Zie het "print" commando hieronder.
 
Het grootste deel van deze commando's  werken slechts met grafische vensters en 
met het grafische box besturingseenheid "graphicbox control".  
Men zou moeten opmerken dat de grafische vensters en graphicboxes voor grafisch teken 
materiaal bestemd zijn. Het is niet raadzaam om "controls" erin te plaatsen, 
aangezien sommige "controls" niet behoorlijk werken wanneer zij geplaatst worden 
in grafische boxen of grafische vensters. 
Als er een behoefte is om teksten te tonen binnen een graphicbox of grafisch venster, 
gebruik dan de mogelijkheden voor grafische teksten eerder dan een "statictext control".

BELANGRIJKE BERICHT: om te tekenen, moet u ervoor zorgen dat de teken pen neer, en niet omhoog is.

Zie verder voor meer informatie.

Hier is een voorbeeld dat een grafisch venster gebruikt:

    open "Drawing" for graphics as #handle
    print #handle, "home"       'center the pen
    print #handle, "down"       'ready to draw
    print #handle, "fill red"   'fill the window with red
    print #handle, "circle 50"  'draw a circle
    print #handle, "flush"      'make the graphics stick

    wait

En is hier een voorbeeld dat een graphicbox gebruikt:

    graphicbox #handle.gbox, 10, 10, 150, 150
    open "Drawing" for window as #handle
    print #handle.gbox, "home"       'center the pen
    print #handle.gbox, "down"       'ready to draw
    print #handle.gbox, "fill red"   'fill the graphics area red
    print #handle.gbox, "circle 50"  'draw a circle
    print #handle.gbox, "flush"      'make the graphics stick
    wait

Omdat tekeningen vele gedetailleerde teken verrichtingen kunnen impliceren, 
staat Liberty BASIC in één enkele commando statement meervoudige commando's toe, 
zolang zij door puntkomma's worden gescheiden.  
Het volgende voorbeeld toont verscheidene grafische commando's, elk op zijn eigen regel:

    print #handle, "up"
    print #handle, "home"
    print #handle, "down"
    print #handle, "north"
    print #handle, "go 50"

De zelfde commando's kunnen ook op één enkele regel worden gegeven, 
en zullen ietsje  sneller uitvoeren:

print #handle, "up ; home ; down ; north ; go 50"

Als de tekst wordt getoond door middel van grafische commando's, 
kan een puntkomma achter het commando niet worden gebruikt om de tekst te tonen. 
Wanneer grafische tekst met  gebruik van (\) of ( | ) het karakter wordt getoond, 
dan zal elke puntkomma die in dezelfde regel staat worden beschouwd 
als een deel van de tekst string en dus gewoon worden getoond.

Belangrijk: Bij het tekenen in een grafisch venster of een grafische box, 
worden de te verrichten handelingen door Liberty BASIC opgeslagen in geheugen, 
zodat verversen van het tekenwerk bliksemsnel  kan worden gepresteerd.  
Deze opslagfunctie gebruikt geheugen.  Als een toepassing voortdurend grafisch tekent, 
zal het systeem uiteindelijk geen vrij geheugen overhebben waardoor 
eventueel de computer kan crashen. Om dit te verhinderen, 
zou de toepassing die tekenwerk verricht slechts die plaatjes moeten opslaan 
die nodig zijn om direct te vertonen. 
Cls, delsegment, discard en flush commando's helpen om het grafisch geheugen te beheren. 
Zie ook:  Graphics

Liberty BASIC ondersteunt sprites in grafische vensters en in grafische boxen.  
Slechts één grafische box of grafisch venster mag in een programma sprites gebruiken.  
Om meer te leren over het gebruik van sprites, zie Sprites.

Het gebruik van variabelen in de commando's:

Om letterlijke waarden te gebruiken, plaats men ze binnen de aanhalingstekens:
print #handle, "box 12 57"

Om echter variabelen te gebruiken, plaats men die buiten de aanhalingstekens,
waarbij de spaties intact dienen te blijven:
x=12 : y = 57
print #handle, "box ";x;" ";y

Voor meer, zie Understanding Syntax.

Graphicbox commando's


De volgende bevelen kunnen worden verzonden naar een graphicbox. 
Wanneer een graphicbox ontoegankelijk (disable) wordt gemaakt, 
kunnen het toetsenbord en de muis geen events meer onderscheppen.
print #handle.ext, "setfocus"
Dit zorgt ervoor dat "de control"  inputnadruk ontvangt (geselecteerd raakt). 
Dit betekent dat elke toetsenbord aanslag aan "de control" zal worden doorgegeven.

#handle.ext" enable "
Dit zorgt ervoor dat er toegang tot dit besturingselement (control) is. 

#handle.ext " disable"
Dit maakt dit besturingselement (control) inactief , 
het kan niet langer muis en toetsenbord events onderscheppen. (Sommige controls worden licht grijs.) 

#handle.ext " show"
Dit zorgt er voor dat dit besturingselement (control) zichtbaar wordt. 

#handle.ext " hide"
Dit verbergt dit besturingselement (control) en maakt het onzichtbaar.

#handle, "autoresize" 
dit commando zorgt ervoor dat de randen van de control 
hun afstand tot de randen van het algemene venster bewaren.  
Als de gebruiker het venster verkleint of vergroot (resizes), 
dan verandert ook de "graphicbox control".

Grafische commando's (in alfabetische volgorde):

print #handle, "backcolor COLOR" 
Dit commando stelt de te gebruiken kleur in als getekende figuren met een kleur worden gevuld. 
Dezelfde kleuren zijn beschikbaar als bij het hieronder volgend commando voor de kleur (COLOR).

print #handle, "backcolor red(0-255)  green(0-255) blue(0-255)" 
Deze tweede vorm van backcolor specificeert een zuivere RGB kleur.  
Dit werkt slechts met displays met meer dan 256 kleuren.  
Om bijvoorbeeld een groenachtig blauwe kleur tot stand te brengen, meng groen en blauw:
print #handle, "backcolor 0 127 200"


print #handle, "box x y" 
Dit commando tekent een rechthoek en gebruikt de penpositie als één hoek, en x, y als de  andere hoek.

print #handle, "boxfilled x y" 
Dit commando tekent een rechthoek en gebruikt de penpositie als één hoek, en x, y als de  andere hoek.
De rechthoek wordt gevuld met de gespecificeerde kleur en gebruikt 
daarvoor het andere commando BACKCOLOR.

print #handle, "circle r" 
Dit commando trekt een cirkel met straal r vanuit de huidige penpositie.

print #handle, "circlefilled r" 
Dit commando trekt een cirkel met straal r, en vult het met de gespecificeerde kleur uit het commando BACKCOLOR.

print #handle, "cls" 
Dit commando maakt het grafisch venster schoon, 
waarbij alle getekende elementen en geflushte segmenten worden gewist (en geeft al geheugen dat zij hebben gebruikt vrij).

print #handle, "color COLOR" 
Dit bevel stelt de kleur van de pen in om COLOR te zijn

 

Hier is een lijst van geldige kleuren (in alfabetische volgorde):

black, blue, brown, buttonface, cyan, darkblue, darkcyan, darkgray, darkgreen, darkpink, darkred, 
green, lightgray, palegray, pink, red, white, yellow

Palegray en Lightgray zijn verschillende namen voor dezelfde kleur.  
Buttonface is de standaard achtergrond kleur (default background color) van de huidige setting op de gebruikerssysteem, 
dus het zal variëren al naar gelang het kleurenschema van het bureaublad.  

Hier is een grafische representatie van de genoemde kleuren:

print #handle, "color red(0-255)  green(0-255) blue(0-255)" 
De tweede vorm van kleur specificeert een zuivere RGB kleur.  
Dit werkt slechts met display modes groter dan 256 kleuren.  
Om een violette kleur tot stand te brengen bijvoorbeeld, meng rood en blauw:
print #handle, "color 127 0 127"

print #handle, "delsegment n" 
Dit zorgt ervoor dat het tekening segment met het segment identiteit "n" zal worden verwijderd 
uit de tekeningen lijst van het venster.  Het geheugen dat door het tekening segment werd benut 
wordt teruggegeven aan het besturingssysteem.  
Wanneer het venster opnieuw wordt getekend zal het geschrapte 
segment niet meer mee getekend worden. 
Zie het SEGMENT commando voor instructies bij het terugwinnen van een segment identiteit nummer.

print #handle, "delsegment segmentName" 
Dit zorgt ervoor dat het tekening segment met de naam "segmentName"  zal worden verwijderd 
uit de tekeningen lijst van het venster.  Het geheugen dat door het tekening segment werd benut
wordt teruggegeven aan het besturingssysteem.  
Wanneer het venster opnieuw wordt getekend zal het geschrapte 
segment niet meer mee getekend worden. 
Zie het FLUSH commando voor instructies bij de toewijzing van segmentnamen.

print #handle, "discard" 
Dit zorgt ervoor dat alle sinds de laatste FLUSH getekende items worden weggegooid 
(hiermee winnen we ook het geheugen terug dat door de weggegooide items werd gebruikt). 
Discard (wegdoen) houdt niet in dat direct opnieuw getekend wordt, 
dus de items die discard zijn zullen nog getoond worden totdat  
er opnieuw getekend wordt  (zie redraw (opnieuw tekenen)).

print #handle, "down" 
Dit commando is het tegengestelde van UP.  Dit bevel reactiveert het proces van tekenen. 
De pen moet DOWN (neer) zijn om iets grafisch te kunnen tonen.

print #handle, "drawbmp bmpname x y"
Dit commando tekent een bitmap die bmpname wordt genoemd 
(vooraf geladen met het LOADBMP statement, zie command reference)
op de x-y plaats. Zie ook: BMPSAVE

print #handle, "ellipse w h" 
Dit commando tekent een ellips gecentreerd daar waar de pen staat 
met een breedte w (width) en een hoogte h (height)

print #handle, "ellipsefilled  w h" 
Dit commando tekent een ellips gecentreerd op de penpositie met een breedte w en hoogte h. 
De ellips wordt gevuld met de gespecificeerde kleur waarbij gebruik 
wordt gemaakt van het commando backcolor (zie hierboven).

print #handle, "fill COLOR"
of...         
print #handle, "fill red(0-255)  green(0-255) blue(0-255)" 
Dit commando vult het venster met COLOR (KLEUR).  
Voor een lijst van toegestane kleuren zie hierboven het commando COLOR.  
De tweede vorm specificeert een zuivere RGB kleur.  
Dit werkt slechts met display modes groter dan 256 kleuren.

print #handle, "flush" 
Dit commando verzekert dat de grafische tekeningen op het scherm "kleven". 
Telkens als het commando FLUSH wordt gegeven na één of meerdere grafische handelingen, 
wordt een nieuwe groep (een segment genaamd) gecreëerd. 
Elk segment van getekende items krijgt zijn eigen identiteitsnummer. 
Het segment commando haalt het identiteitsnummer van het huidige segment op. 
Telkens als een segment wordt geflushed, wordt een nieuw leeg segment gecreëerd, 
en de waarde van het identiteitsnummer met één verhoogd.  
Zie ook de bevelen cls, delsegment, discard, redraw, en segment.

print #handle, "flush segmentName" 
Dit commando verzekert dat de grafische tekeningen op het scherm "kleven", 
en geeft een naam aan het geflushte segment. Telkens als het commando FLUSH wordt gegeven 
na één of meerdere grafische handelingen, wordt een nieuwe groep (een segment genaamd) gecreëerd. 
Deze toegewezen naam kan in latere commando's worden gebruikt om het segment te manipuleren. 
Zie ook de bevelen cls, delsegment, discard, redraw, en segment.

print #handle, "font facename pointSize" 
Dit commando stelt de lettertype van de pen in op de gespecificeerde font en puntgrootte.
Als een nauwkeurige gelijke lettertype niet kan worden gevonden, 
dan zal Liberty BASIC proberen om een dichtstbijzijnde gelijke te matchen, 
waarbij grootte belangrijker is dan hoe het eruit ziet (gezicht.) 
Voor meer over het specificeren van fonts lees How to Specify Fonts
Voorbeeld:
print #handle, "font Times_New_Roman 10"

print #handle, "getbmp bmpName x y width height" 
Dit commando zal een bitmap kopie van het grafisch venster maken te beginnen bij x, y 
en daarbij breedte (width) en hoogte (height) gebruiken. 
Het blijft in het geheugen. Deze bitmap kan worden getekend met het commando DRAWBMP,
net zoals elke andere bitmap die met LOADBMP werd geladen.
Het is ook mogelijk om een handle van Windows aan dit bitmap te koppelen met de functie HBMP( ). 
Wanneer de bitmap niet meer nodig is, kunt u het uit het geheugen wissen met UNLOADBMP. 
Het beeld dat met GETBMP wordt verkregen kan op schijf met het commando BMPSAVE worden bewaard.

print #handle, "go D" 
Dit zorgt ervoor dat de teken pen voorwaarts beweegt over een afstand van D 
vanaf de huidige positie, en in de huidige richting.

print #handle, "goto X Y" 
Dit commando leidt de pen naar positie X-Y.  Een lijn zal worden getrokken als de pen neer is.

print #handle, "home" 
Dit bevel centreert de pen in het grafisch venster.

print #handle "horizscrollbar on/off [min max]" 
Dit commando bestuurd horizontale schuifbalk. Als de waarde "aan" (on) is, 
wordt de schuifbalk zichtbaar gemaakt. 
Als de waarde "uit" (off) is, wordt de schuifbalk verborgen. 
Wanneer de schuifbalk aangezet wordt stellen de facultatieve parameters 
voor minimum en maximum range van de schuifbalk voor 
(deze parameters doen niets wanneer de schuifbalk wordt uitgezet.) 
Zonder deze parameters wordt de standaard range geplaatst op 0 en
de breedte gelijk aan het grafisch beeld in pixels.
Een grote schuifbalk range staat het grafisch venster toe om over een lange afstand te scrollen,
terwijl een kleine range het slechts toelaat om over een korte afstand te scrollen.

print #handle, "line X1 Y1 X2 Y2" 
Dit commando trekt een lijn van punt X1 Y1 naar punt X2 Y2.  
Als de pen omhoog is, zal geen lijn worden getrokken, 
maar de pen zal op punt X2 Y2 worden geplaatst.

print #handle, "locate x y width height" 
Dit commando is voor een graphicbox, niet voor een grafisch venster, 
en het verandert het besturingselement  (control) in zijn venster van plaats.  
Dit is efficiënt wanneer de controle binnen een venster van type "Window" wordt geplaatst.  
De control zal zijn grootte en plaats niet bijwerken voordat een commando voor refresh 
wordt verzonden naar het venster.  Zie het inbegrepen RESIZE.BAS voorbeeldprogramma.

print #handle, "north" 
Dit commando plaatst de huidige richting op 270 (het noorden).  
Nul graden richt naar rechts (het oosten), 90 wijst neer (zuiden), en 180 naar links (het westen).

print #handle, "pie w h angle1 angle2" 
Dit commando tekent een taartpunt binnen een ellips van breedte w en hoogte h.  
De taartpunt zal bij angle1 (hoek1) beginnen, en met de klok naar angle2 gaan als angle2 positief is,
of linksdraaiend naar angle2 als angle2 negatief is.

print #handle, "piefilled w h angle1 angle2" 
Dit commando tekent een taartpunt binnen een ellips van breedte w en hoogte h. 
De taartpunt zal bij angle1 (hoek1) beginnen, en met de klok naar angle2 gaan als angle2 positief is, 
of linksdraaiend naar angle2 als angle2 negatief is. De taartpunt wordt gevuld  
met de gespecificeerd kleur die het bevel BACKCOLOR gebruikt.

print #handle, "place X Y" 
Dit commando plaatst de pen bij X-Y.  
Geen tekening zal worden getrokken, zelfs als de pen NEER is.

print #handle, "posxy xVar yVar" 
Dit commando wijst de huidige positie van de pen aan xVar en aan yVar toe.

print #handle, "print [size]" 
Dit commando verzendt het in kaart gebrachte beeld naar de Windows Print Manager voor output.
Het grootte argument is facultatief en het niet afhankelijk van de display resolutie van de gebruiker. 

print #handle, "print" 
Liberty BASIC zal nu automatisch de plaatjes op schaal maken bij het verzenden naar een printer, 
tenzij het facultatieve grootte argument wordt gebruikt. 
Tot versie 4.0, drukte Liberty BASIC de inhoud van grafische vensters in 1:1,
hetgeen in uiterst kleine gedrukte versies resulteerde van wat op het scherm zichtbaar was.
Bij de huidige versie zal de schaal van de tekening worden aangepast aan de grootte op het display, 
en de resolutie van de geprinte pagina. 
Alleen TrueType fonts zullen van schaal veranderen bij het printen. 
Bitmap fonts houden hun oorspronkelijke resolutie bij het printen. 
Wanneer er een grafische venster wordt geprint waarop het fill commando is toegepast,
dan zal de volledige pagina worden gevuld met die kleur, hetgeen vaak onwenselijk kan zijn.
Als u grafische plaatjes naar de printer wilt zenden, overweeg dan boxfilled te gebruiken 
in plaats van het fill commando, zodat de absolute grootte van het te vullen gebied kan worden gespecificeerd.
Gebruik het DUMP commando om ervoor te zorgen dat het printen onmiddellijk begint. 
Zie DUMP.


print #handle, "print vga" 
Het gebruik van het facultatieve vga grootte argument zorgt ervoor dat een document 
met een breedte van 600 pixel op het display, wordt uitgeprint 
over de volledige breedte van het printer papier.

print #handle, "print svga" 
Het gebruik van het facultatieve svga grootte argument zorgt ervoor dat een document 
met een breedte van 800 pixel op het display, wordt uitgeprint 
over de volledige breedte van het printer papier.

print #handle, "print xga" 
Het gebruik van het facultatieve vga grootte argument zorgt ervoor dat een document 
met een breedte van 1024 pixel op het display, wordt uitgeprint 
over de volledige breedte van het printer papier.


print #handle, "redraw"
of
print #handle, "redraw "; idNum
of
print #handle, "redraw "; segmentName 
Dit commando zorgt ervoor dat alle in het venster getekende segmenten, 
of een specifiek getekend segment opnieuw getekend worden als ze geflushed waren. 
Het specifieke segment kreeg van Liberty BASIC een identiteitsnummer. 
Dat nummer kunnen we terughalen met het SEGMENT commando, 
of het kan een segmentnaam zijn die door het programma werd toegewezen bij het FLUSH commando.  
Geschrapte (deleted) segmenten zullen niet opnieuw getekend worden (zie DELSEGMENT).  
Elk pas getekende item (sinds de laatste flush zullen  ook niet opnieuw getekend worden,
en zullen verloren gaan.

print #handle, "rule rulename"
of
print #handle, "rule "; _R2_NOTXORPEN 
Dit commando specificeert of een tekening (rulename OVER) over 
een reeds eerder op het scherm getekende plaatje schrijft 
of dat de exclusief-or  techniek (rulename XOR) gebruikt wordt. 
Het is ook mogelijk om de Windows constanten te gebruiken om een tekeningsregel
(zoals hierboven getoond) te selecteren.  

Hier zijn de constanten die Windows kent:

  _R2_BLACK
  _R2_WHITE
  _R2_NOP
  _R2_NOT
  _R2_COPYPEN           - de default LB teken regels

  _R2_NOTCOPYPEN
  _R2_MERGEPENNOT
  _R2_MASKPENNOT
  _R2_MERGENOTPEN
  _R2_MASKNOTPEN
  _R2_MERGEPEN
  _R2_NOTMERGEPEN
  _R2_MASKPEN
  _R2_NOTMASKPEN
  _R2_XORPEN
  _R2_NOTXORPEN         - de xor LB teken regel

print #handle, "segment variableName"
Dit zorgt ervoor dat het venster variableName als segmentidentiteit plaatst 
aan het momenteel geopende tekeningssegment. 
Om de segmentidentiteit van het laatste geflushte segment te krijgen, trek je één af van het huidige. 
De identiteitscijfers van een segment zijn nuttig om verschillende delen van een tekening
te manipuleren.

print #handle, "set x y"
Dit commando tekent een punt op x, y en gebruikt daarvoor de huidige penkleur en grootte.

print #handle, "setfocus"
Dit zorgt er voor dat Windows de inputnadruk aan deze control geeft.
Dit betekent dat, als een andere control in het zelfde venster eerst actief en benadrukt was, 
dat nu deze control benadrukt en actief wordt. 
Deze control ontvangt nu de muis en toetsenbordinput.

print #handle, "size S"
Dit commando stelt de grootte van de pen in als S.  
De standaard is 1.  Dit zal de dikte van lijnen en figuren die met de meeste bevelen 
in deze sectie werden vermeld, beïnvloeden.

print #handle, "stringwidth? varToMeasure$ widthInPixels"
Dit commando levert de breedte in pixels van een string, gebaseerd op 
de huidige font van de graphicbox of het grafische venster.

    open "my stringwidth" for graphics as #g
    name$ = "Carl Gundel"
    print #g, "stringwidth? name$ width"
    print width
    print #g, "font courier_new 30"
    print #g, "stringwidth? name$ width"
    print width
    close #g
    end


print #handle, "\text"
Dit commando toont de gespecificeerde tekst op de huidige penpositie. 
De tekst wordt geplaatst met zijn beneden linkerhoek op de penpositie.

Elke extra \ in de tekst zal een tussenregel en een regelinvoer veroorzaken. 
Bijvoorbeeld, zal print #handle, "\ text1 \ text2" ervoor zorgen dat text1 wordt geprint 
op de penpositie, en dan zal text2 direct onder text1 worden getoond.

dus ook ...
 
 print #handle, "|text"
Dit commando werkt als print #handle, "\- tekst"hierboven, maar gebruik |  karakter 
in plaats van het karakter \, waardoor het tonen van het karakter a (\)  mogelijk wordt.

print #handle, "trapclose branchLabel"
Dit zal Liberty BASIC vertellen om uitvoering van het programma bij branchLabel voort te zetten
als de gebruiker op de menu box van het systeemmenu tweemaal klikt 
of het systeemmenu neer trekt en close selecteert 
dit bevel werkt niet met graphicbox controls).

print #handle, "turn A"
Dit commando laat de tekenpen van huidige richting veranderen, 
volgens hoek A en die toe te voegen aan de huidige richting. 
A kan positief of negatief zijn.

print #handle, "up"
Dit commando tilt de pen op.  Alle GO of bevelen GOTO zullen nu slechts de pen naar 
zijn nieuwe positie verplaatsen zonder te tekenen.  
Andere teken bevelen zullen eenvoudig genegeerd worden tot de pen neer wordt gezet.

print #handle "vertscrollbar on/off [min max]"
Dit commando beheert de verticale schuifbalk. Als de waarde "on" is, 
wordt de schuifbalk zichtbaar gemaakt. Als de waarde "off" is, is de schuifbalk verborgen. 
Wanneer de schuifbalk wordt aangezet dan stellen de facultatieve parameters voor minimum en maximum range 
de minimale en maximale schuifbalk range in pixel in 
(deze parameters doen niets wanneer de schuifbalk wordt uitgezet.) 
Zonder deze parameters wordt de standaardrange geplaatst op 0 en 
op de hoogte van de grafisch beeld in pixels gemeten. 
Een grote schuifbalk range staat het grafisch venster toe om een lange afstand te rollen, 
terwijl een korte range het toestaat om een korte afstand te rollen.

print #handle, "when event eventHandler"
Dit vertelt het venster om muis en toetsenbord gebeurtenissen (events) te verwerken. 
Deze gebeurtenissen ontstaan wanneer een gebruiker 
klikt, tweemaal klikt, sleept of gewoon de muis binnen het grafisch venster beweegt. 
Een gebeurtenis kan ook de gebruiker zijn die op een toets duwt terwijl het grafische venster
of de graphicbox de inputnadruk (input focus) heeft (zie het setfocus bevel, hierboven).
Dit verstrekt een werkelijk eenvoudig mechanisme om de gang van een programma 
te controleren indien daarbij een grafisch venster wordt gebruikt.

De eventHandler kan een geldig aftak etiket (branch label) of de naam van een subroutine zijn. 
Zie ook:  Controls and Events

Het verzenden van 
print #handle"when leftButtonDown [startDraw]" naar een graphicbox of 
grafisch venster zal dat venster vertellen om een goto [startDraw] te forceren 
als de muis binnen dat venster is terwijl de gebruiker de linkermuisknop drukt.  
Het verzenden van " when leftButtonDown startDraw"  naar een grafisch venster 
of graphicbox zal het venster vertellen om de subroutine startDraw aan te roepen 
als de muis binnen dat venster is terwijl de gebruiker de linkermuisknop drukt. 
De handle van de graphicbox , en de variabelen MouseX en MouseY gaan over 
naar de aangewezen subroutine. 
Als toetsenbordinput opgemerkt wordt, worden ook het 
graphicbox handvat en de waarde van  de ingeduwd toets over gezet 
naar de aangewezen subroutine. 
Zie See Reading Mouse Events and Keystrokes.

Telkens wanneer een muis event is waargenomen, 
plaatst Liberty BASIC de x en y positie van de muis in de variabelen MouseX, en MouseY. 
Deze waarden vertegenwoordigen het aantal pixels in x en y richting 
waarin de muis van de boven linkerhoek van het grafisch venster verwijderd was.

Telkens wanneer een toetsenbordgebeurtenis waargenomen wordt, 
plaatst Liberty BASIC de waarde van de toets in de speciale variabele, Inkey$. 
Zie Using Inkey$.

Als de uitdrukking 
print #handle, when event" wordt gebruikt zonder het noemen van een aftak etiket, 
dan wordt verdere detectie van die (event) gebeurtenis beëindigd. 
Het kan echter  op elk moment  worden hersteld. 
Voorbeeld om de handler van de leftButtonDown event uit te zetten:

Het is belangrijk om op te merken dat dit statement 
de gebeurtenissen (events) van de muis  alleen detecteert 
op het moment van indrukken, loslaten en bewegen, en toetsen die worden bediend. 
Het geeft niet aldoor de status van muisknopen of toetsenbord weer. 
Bijvoorbeeld "when leftButtonDown" detecteert het moment waarop de knop wordt ingedrukt. 
Het blijft niet rapporteren dat de knop in de ingedrukte stand is.

print #handle, "when leftButtonDown"

Gebeurtenissen die kunnen worden waargenomen - de namen zijn hoofdletters gevoelig:
      leftButtonDown	  	- de linkermuisknop werd ingedrukt
      leftButtonUp       	- de linkermuisknop werd vrijgegeven
      leftButtonMove		- de muis bewoog zich terwijl de linkerknop neer was
      leftButtonDouble		- de linkermuisknop werd tweemaal geklikt
      rightButtonDown		- de rechter muisknop werd ingedrukt
      rightButtonUp		- de rechter muisknop werd vrijgegeven
      rightButtonMove		- de muis bewoog zich terwijl de rechterknop neer was
      rightButtonDouble		- de rechtermuisknop werd tweemaal geklikt
      middleButtonDown		- de middelste muisknop werd gedrukt
      middleButtonUp		- de middelste muisknop werd vrijgegeven        
      middleButtonMove		- de muis bewoog zich terwijl de middelste knop neer was       
      middleButtonDouble	- de middelste muisknop werd tweemaal geklikt

      mouseMove			- de muis werd bewogen terwijl er geen knoop neer was
      characterInput		- een toets werd ingedrukt terwijl het grafisch venster input focus heeft 
				  (zie het setfocus commando, hierboven)

WAARSCHUWING: het gebruik van graphicboxes in dialoog-type vensters is fijn,
maar zij verwerken de inputnadruk voor toetsenbordinput niet goed.
Als een programma graphicboxes vereist en daarbij toetsenbord events moet siganleren,
dan moet een venster van type "Window" worden gebruikt.

Zie ook: Graphics, Inkey$, Using Virtual Key Constants with Inkey$.,
Using Inkey$, Reading Mouse Events and Keystrokes