Voorbeeld programmeren in AW: Pulldown menu’s Inleiding: Ik denk dat iedereen in dit Windows-tijdperk de kreet pulldown menu's wel kent maar toch wil ik hier iets verder op ingaan. Het begint namelijk met een menu-balk waarop een aantal commando's staan. Wanneer op een van deze commando's geklikt wordt verschijnt er een nieuw menu met daarin alleen commando's die betrekking hebben met het voorgaande gekozen commando. Door deze structuur kun je dus vrij snel een commando gevonden krijgen. In dit voorbeeld komt het commando DLGOPTION veelvuldig aan bod. Doel: Het doel is om op een vrij eenvoudige manier gebruik te kunnen maken van pulldown menu's voor het kiezen van commando's op de Atom, in combinatie met Atomic Windows. Principe:
Het programma is vrij simpel van opzet. Als eerste begin je met het plaatsen van de commandos in de menubalk met het DLGOPTION commando (FUNCTION MENU). Wanneer er op een commando geklikt wordt, wordt een procedure SUBxxx opgeroepen welke het submenu plaatst met wederom het DLGOPTION commando. Deze manier kan eindeloos (tot het geheugen vol is) uitgebreid worden.Verder is er ook nog een optie ingebracht om een commando wel/niet selecteerbaar te maken.
PROC INIT: Hier wordt een en ander geinitialiseerd voor AW. De array S bevat voor elk submenu 1 byte waarvan elk bit de lockstatus van het commando voorsteld. Wanneer dit bitje 1 is dan is het commando gelocked en wordt dan grijs weergegeven waardoor het niet selecteerbaar is. Wanneer dit bitje 0 is dan wordt het commando normaal weergegeven en is dan selecteerbaar. FUNCTION MENU: Deze functie plaatst een menubalk op het scherm net onder de kop van het window. Afhankelijk van welk commando gekozen wordt, wordt het bijbehorende submenu opgeroepen. De exitcode van het laatst gekozen commando is de waarde die de functie MENU krijgt. PROC SUBFILE:
In deze procedure wordt het submenu FILE geplaatst. Dit submenu bevat 3 commandos waarvan het commando LOAD weer een submenu heeft.
PROC SUBTOGGLE: Deze procedure laat alle commando's zien die gekozen kunnen worden. Voor elk commando staat het lockbitje aangegeven. Een klik op het commando verandert het lockbitje. PROC SUBLOAD:
In deze procedure wordt een submenu voor het commando LOAD geplaatst.
De listing van het programma staat hieronder: 20 30 DIM S4,V32 40 50 PROC INIT 60 !S=0 70 DLGBASE#7000 80 *D. 90 *LOAD PDFONT 100 CLEAR4 110 DLGCLS 120 DLGPO.0 130 PEND 140 150 FUNCTION MENU 160 DLGCR.A,"Pulldown Menu's",40,1,1,30,20 170 DLGLA." ",4,0,2 180 DLGOPT.1,"File",4,0,2 190 DLGOPT.2,"Set/Reset",4,5,2 200 DLGOPT.3,"Stop",4,26,2 210 DLGEND 220 IF A=1;SUBFILE 230 IF A=2;SUBTOGGLE 240 IF A<>3;G.130 250 MENU=B 260 FEND 270 280 PROC SUBFILE 290 DLGLA."File",12,0,2 300 DLGCRE.B,"",0,1,4,6,4 310 DLGOP.11," Save ",((?S&1>0)*16),0,0 320 DLGOP.12," Load>",((?S&2>0)*16),0,1 330 DLGOP.13," Copy ",((?S&4>0)*16),0,2 340 DLGOP.14," Exit ",0,0,3 350 DLGEND 360 IF B=12;SUBLOAD 370 PEND 380 390 PROC SUBTOGGLE 400 DLGLA."Set/Reset",8,5,2 410 DLGCR.B,"",0,6,4,9,7 420 $V=" Save ";V?1=8-(?S&1>0);DLGOPT.21,$V,0,0,0 430 $V=" Load ";V?1=8-(?S&2>0);DLGOPT.22,$V,0,0,1 440 $V=" Copy ";V?1=8-(?S&4>0);DLGOPT.23,$V,0,0,2 450 $V=" File ";V?1=8-(S?1&1>0);DLGOPT.24,$V,0,0,3 460 $V=" Text ";V?1=8-(S?1&2>0);DLGOPT.25,$V,0,0,4 470 $V=" Block ";V?1=8-(S?1&4>0);DLGOPT.26,$V,0,0,5 480 DLGOPT.27," Exit ",0,0,6 490 DLGEND 500 IF B=21;?S=?S:1 510 IF B=22;?S=?S:2 520 IF B=23;?S=?S:4 530 IF B=24;S?1=S?1:1 540 IF B=25;S?1=S?1:2 550 IF B=26;S?1=S?1:4 560 PEND 570 580 PROC SUBLOAD 590 DLGLA." Load>",8,0,1 600 DLGCR.B,"",0,7,5,7,4 610 DLGOPT.121," File ",((S?1&1>0)*16),0,0 620 DLGOPT.122," Text ",((S?1&2>0)*16),0,1 630 DLGOPT.123," Block ",((S?1&4>0)*16),0,2 640 DLGOPT.124," Exit ",0,0,3 650 DLGEND 660 PEND 670 680 INIT 690 X=MENU 700 $V="Uw keus was: " 710 V?12=(X/100)+48 720 V?13=(X/10)%10+48 730 V?14=(X%10)+48 740 DLGLA.$V,32,7,9 750 END Zo, weer een artikel in de reeks 'Voorbeeld programmeren in AW'. De volgende keer weer meer. Tot schrijvens!!! Kees van Oss |