BMPBUTTON

BMPBUTTON #handle.ext, filespec, returnVar, corner, posx, posy

Beschrijving:
Dit statement voegt een knop waarop een plaatje staat,
toe aan een venster dat met het OPEN commando is is gecreerd
De knop verschijnt zodra het venster wordt geopend.

Gebruik:
Het BMPBUTTON statement moet in de listing worden geplaatst vr het statement
waarmee het venster waarin de knop (met het plaatje erop)wordt geopend.

Hier is een korte beschrijving voor elke parameter zoals hierboven vermeld:

#handle.ext
#handle van het venster waarin de knop moet verschijnen moet identiek zijn
aan de handle van de bmpbutton. Bmpbutton kan daarnaast in zijn handle,
een unieke extensie hebben waardoor het speciaal aan hem gerichte
commando's kan ontvangen. De uitbreiding begint met een punt en kan daarna
elke mogelijke combinatie van alfanumerieke karakters omvatten.
Elke bmpbutton uit een venster waarvan de handle #win is
zal dus #win als eerste deel van zijn eigen handle-naam hebben.

 

Voorbeelden van bmpbutton handles zijn:
#win (geen extensie)
#win.okay
#win.1
#win.cancel
#win.bmpbutton2

"filespec"
In de filespec parameter plaatst u het volledige of relatieve pad
met de naam van bitmap plaatje ( *.bmp bestand) waarin het bmp plaatje staat.
Dit bitmap plaatje zal op de knop verschijnen.
Er zijn geen breedte of hoogteparameters in het bmpbutton statement,
omdat de grootte van de knop door het programma wordt uitgezocht.
Het wordt bepaald door de grootte van het bitmap plaatje dat erop zal verschijnen.
Zie ook Path en Filename.

returnVar
returnVar dient slechts uit n woord te bestaan waar geen aanhalingstekens omheen staan.
Het mag geen string-variabele zijn. Het moet altijd met een letter beginnen,
maar het mag eveneens cijfers bevatten.

Als returnVar een geldig etiket (label) is, dat betekent dus dat het een woord tussen rechte haakjes is,
dan zal het klikken van de knop een programma sprong naar
het gespecificeerde etiket (label) veroorzaken.
Na het klikken van de knop zal daarna de code die volgt na het label worden uitgevoerd.

Als returnVar de naam van een subroutine is, dan zal die subroutine worden geactiveerd
wanneer de knop wordt geklikt, en de handle-naam van de knop zal in de subroutine
als argument worden overgenomen.
Zie ook: Controls en Events

Als returnVar niet een geldig etiket of subroutinenaam is, dan komt de waarde van returnVar
beschikbaar om worden gelezen wanneer het programma bij een inputvar$ statement wordt gestopt.
De waarde zal in de aldaar gespecificeerde variabele worden geplaatst.
Een voorbeeld verschijnt hieronder.

corner (hoekpunt)
Deze parameter moet n van het volgende zijn:
UL, UR, LL, of LR.
Het specificeert welk hoekpunt van het venster als anker (aangrijppunt)
voor de knop dienst doet.
Bijvoorbeeld, als LR wordt gebruikt, dan zal de knop met rechter beneden hoekpunt worden gepositioneerd.
Als de venstergrootte tijdens uitvoering van het programma wordt veranderd,
dan zal de knop altijd op dezelfde positie verschijnen,
in relatie tot het hoekpunt dat als anker werd gespecificeerd.

UL = linksboven (Upper Left)
UR = rechtsboven (Upper Right)
LL = linksonder (Lower Left)
LR = rechtsonder (lower Right)

posx, posy
Deze parameters geven de plaats van de knop ten opzichte van het anker hoekpunt.
posx en posy worden uitgedrukt in pixels.
Waarden kleiner dan n kunnen ook gebruikt worden voor posx en posy.
Bijvoorbeeld, als de ankerhoekpunt UL is en posx is .9 en posy is .9,
dan zal de knop geplaatst worden op 9/10 van de afstand van het venster in
zowel x als y richting vanaf de linkerbovenhoek.
Deze methode om knoppen te plaatsen of verplaatsen positioneert ze
in relatie tot de grootte van het venster, in plaats van de eerder genoemde
vorm van verankeren via een gespecificeerd hoekpunt.

Bitmap plaatjes van Liberty BASIC
Er is een verzameling van bitmap plaatsje voor knoppen wordt met Liberty BASIC meegeleverd
in de map "bmp". De verzameling bevat ook enkele blanco knoppen.
Met een tekenprogramma als MS Paint kunt u zelf bitmap plaatjes maken of wijzigen
om die later in Liberty BASIC programma's te gebruiken.

Het detecteren van het indrukken van de knop
Het klikken op de knop wordt gedetecteerd en indien het statement SCAN was gebruikt,
wordt daarnaar gehandeld. Als SCAN niet wordt gebruikt, dan moet de programma uitvoering
met een INPUT worden gestopt of naar een WAIT (wachten) worden geleid,
waarna pas op het indrukken van de knop zal worden gereageerd.

 

VOORBEELD PROGRAMMA'S

Een voorbeeld waarin een label (etiket) gebruikt als aftakking:
bmpbutton #main.arrow, "bmp\arrwbttn.bmp", [arrowClicked], UL, 10, 10
open "Button Example" for window as #main
[loop]
wait

[arrowClicked]
notice "The arrow button was clicked. Goodbye."
close #main
end

Dit voorbeeld gebruikt een subroutine als knop-handler:
bmpbutton #main.arrow, "bmp\arrwbttn.bmp", arrowClicked, UL, 10, 10
open "Button Example" for window as #main
[loop]
wait

sub arrowClicked bttnHandle$
notice bttnHandle$;" was clicked. Goodbye."
close #main
end
end sub

Dit voorbeeld geeft een waarde tijdens een input statement:
bmpbutton #main.arrow, "bmp\arrwbttn.bmp", yes, UL, 10, 10
bmpbutton #main.button2, "bmp\bluebttn.bmp", no, UL, 70, 10
open "Use Input Example" for window as #main
#main "trapclose [quit]"
[loop] input answer$
if answer$ = "yes" then notice "You clicked Okay."
if answer$ = "no" then notice "You clicked Cancel."
goto [loop]

[quit]
close #main
end

BMPBUTTON COMMANDO'S

#handle.ext "string"
#handle.ext "bitmap bitmapname"
Dit commando plaatst een eerder geladen bitmap op de knop.
Het bitmap plaatje moet eerder met het commando LOADBMP in het geheugen worden geladen.
"bitmapname" is niet de bestandsnaam van de bitmap,
maar het is de naam die eraan is gegeven door het commando LOADBMP.
Hier is een kort programma dat het bitmap bmpbutton commando demonstreert.

'bitmap.bas
'demonstreer het commando bitmap voor bmpbuttons
'klikken op de knoppen doet de knoppen van beeld wisselen

WindowWidth = 248
WindowHeight = 175
nomainwin
loadbmp "arrow", "bmp\arrwbttn.bmp"
loadbmp "blue", "bmp\bluebttn.bmp"
bmpbutton #main.button1, "bmp\blank4.bmp", [button1Click], UL, 22, 11
bmpbutton #main.button2, "bmp\blank4.bmp", [button2Click], UL, 22, 46
open "BmpButton Image Changer" for window as #main
#main "trapclose [quit]"

'wait here for user events
wait
[button1Click] 'Display arrow image on button 2
#main.button2 "setfocus"
#main.button2 "bitmap arrow"
#main.button1 "bitmap blue"
wait

[button2Click] 'Display arrow image on button 1
#main.button1 "setfocus"
#main.button1 "bitmap arrow"
#main.button2 "bitmap blue"
wait

[quit]
close #main
end

#handle.ext "setfocus"
Met dit commando kunnen we de knop selecteren.
Dit betekent dat elke toets indruk naar die knop zal worden geleid.

#handle.ext "locate x y width height"
Dit commando verplaatst de knop in zijn venster. Dit werkt slechts als de knop
(of andere control) binnen een dialoog of binnen een gewoon window type venster wordt geplaatst.
De control zal qua grootte niet worden bijgewerkt en ook voor wat betreft de plaats
niet worden bijgewerkt voordat er een opdracht voor het verversen (REFRESH) wordt verzonden naar het venster.
Zie het RESIZE.BAS- voorbeeldprogramma.

#handle.ext"enable "
Dit zorgt ervoor dat er toegang tot de control is.

#handle.ext "disable"
Dit maakt de control inactief , de knop wordt licht grijs.

#handle.ext "show"
Dit zorgt er voor dat de control zichtbaar wordt.

#handle.ext "hide"
Dit verbergt de control en maakt het onzichtbaar.