&&------------------------------------------------------------------------------
CURSUS AMIGABASIC                                               GADGETS DEEL 1
------------------------------------------------------------------------------

In dit stukje wil ik eens gaan kijken naar zogenaamde GADGETS. Dat zijn o.a.
die dingen die je overal langs het scherm ziet. Bv. om het scherm te sluiten,
om het kleiner te maken of het naar de achtergrond te brengen.
Maar GADGETS zijn ook bv. die dingen waar je een programmanaam in opgeeft in
de meeste commercieele programma's. Ook gebiedjes die je kunt aantikken zijn
GADGETS.

Ik vertel steeds een stukje en laat dan wat regels zien. Samen vormen al die
regels een programma dat het een en ander laat zien.

Allereerst hebben we een aantal libraries nodig omdat niet alle kommando's een
onderdeel van Basic zijn :

   WINDOW CLOSE 1
   DEFINT a-z
   TRUE=-1
   FALSE=0
   Okay=FALSE

   LIBRARY "exec.library"
   LIBRARY "intuition.library"
   LIBRARY "graphics.library"
&&   DECLARE FUNCTION AllocMem& LIBRARY

We gaan 10 GADGETS aanmaken. Deze moeten in CHIP-geheugen komen te liggen. We
geven CHIP-geheugen aan met het getal 65539 :

   GadCnt = 10
   MemType& = 65539&

   DIM Rp&(1),Wp&(1)

In de volgende arrays houden we de gegevens van alle 10 GADGETS bij.
Gad&() is het adres van elke GADGET-struktuur.
StrBuf&() is de pointer naar een buffer voor de string-GADGETS.
SpecInfo&() is een pointer naar de speciale INFO-struktuur van de string-
GADGETS.

   DIM Gad&(GadCnt),StrBuf&(GadCnt),SpecInfo&(GadCnt)

Nu moeten we het scherm openen en de omrandingen van de diverse GADGETS
tekenen. Een gebiedje dat we moeten kunnen aantikken moet ook als zodanig te
herkennen zijn.
Eerst het openen van het scherm en het opslaan van de nodige informatie :

   SCREEN 1,640,200,4,2 : REM Een Med-res-scherm
   WINDOW 1,"Gadget-Window",(0,0)-(631,186),0,1 : REM Het venster
   Rp&(1)=WINDOW(8) : REM Pointer van de RASTPORT
   Wp&(1)=WINDOW(7) : REM Pointer van het Window
&&   PALETTE 0,0,0,0           : REM Kleur 0
   PALETTE 1,3/16,7/16,13/16 : REM Kleur 1
   PALETTE 2,0,5/16,13/16    : REM Kleur 2
   PALETTE 3,9/16,11/16,0    : REM Kleur 3

   SetDrMd& (Rp(1),0) : REM SetDrawMode

Nu de hokjes tekenen :

   REM Eerste string-GADGET
   LINE(3,5)-(306,18),4,bf:LINE(5,6)-(304,17),0,b
   LINE(7,8)-(302,15),0,bf

   REM Tweede string-GADGET
   LINE(3,21)-(306,34),9,bf:LINE(5,22)-(304,33),0,b
   LINE(7,24)-(302,31),0,bf

   REM ....
   LINE(3,37)-(306,50),9,bf:LINE(5,38)-(304,49),0,b
   LINE(7,40)-(302,47),0,bf

   LINE(3,53)-(306,66),9,bf:LINE(5,54)-(304,65),0,b
   LINE(7,56)-(302,63),0,bf

   LINE(3,69)-(306,82),9,bf:LINE(5,70)-(304,81),0,b
   LINE(7,72)-(302,79),0,bf
&&   LINE(3,85)-(208,98),9,bf:LINE(5,86)-(206,97),0,b
   LINE(7,88)-(204,95),0,bf

   LINE(211,85)-(237,98),9,bf:LINE(213,86)-(235,97),0,b
   LINE(215,88)-(233,95),0,bf

   LINE(240,85)-(306,98),9,bf:LINE(242,86)-(304,97),0,b
   LINE(244,88)-(302,95),0,bf

   BooleanGADGETS:
   LINE(500,25)-(564,38),4,bf:LINE(502,26)-(562,37),0,b
   LINE(500,50)-(564,63),9,bf:LINE(502,51)-(562,62),0,b

   IntuitionTEKST:
   Move& Rp&(1),513&,34& : REM Zet de tekstpointer op de juiste plaats.
   PRINT "Enter"         : REM Druk de tekst af.
   Move& Rp&(1),519&,59&
   PRINT "Eind"
   SetDrMd& Rp&(1),1

Nu komt het eigenlijke aanmaken van de GADGETS. Daarvoor gebruiken we een SUB
aan het einde van het programma omdat de routine tien keer moet worden aan-
geroepen met steeds andere waarden. De aanroep van de SUB gaat met de volgende
waarden :

MakeGad Nummer,LinkerKant,BovenKant,Lengte,Hoogte,Type,Aantal Karakters,
        Karakters te Zien,Volgende GADGET
&&Het type kan zijn : BOOLEAN=0, PROPORTIONAL=3 of STRING=4

BOOLEAN zijn JA-NEE GADGETS.
PROPORTIONAL zijn schuif-GADGETS.
STRING zijn invoer-GADGETS.

   REM STRING-GADGETS
   MakeGad 1,8,8,304,8,4,37,41,2
   MakeGad 2,8,24,304,8,4,37,41,3
   MakeGad 3,8,40,304,8,4,37,41,4
   MakeGad 4,8,56,304,8,4,37,41,5
   MakeGad 5,8,72,304,8,4,37,41,6
   MakeGad 6,8,88,192,8,4,24,41,7
   MakeGad 7,216,88,20,8,4,3,3,8
   MakeGad 8,252,88,52,8,4,6,11,9

   REM BOOLEAN GADGETS
   MakeGad 9,500,25,65,14,1,0,0,10
   MakeGad 10,500,50,65,14,1,0,0,0

**********************  MEER IN DEEL 2 VAN DEZE CURSUS  **********************

------------------------------------------------------------------------------
&&
