HTBasic Help
×
Menu
Index

Example: System Widget Event Disabling

 
10     ! *********************************************************************
20     ! Example: SYSTEM Widget Event Disabling
30     !
40     ! This program builds a set of widgets using the
50     ! SYSTEM widget. You can enable/disable ten events.
60     ! In addition, a status log lists all events that
70     ! occur, such as moving the SLIDER bar, etc.
80     !
90     !                   NOTE
100   !
110   ! You may need to maximize the display to see all
120   ! of the widgets.
130   !
140   ! *****************************************************
150   !
160   DIM Sys_menu$(0:13)[80],Event$(1:2)[80],Panel$[80]
170   DIM Printer$[80],Slider$[80],Meter$[80]
180   INTEGER I,Space,Sys_event,Cur_event,Events
190   DATA ACTIVATED, ALARM, CHANGED, DONE, INVALID NUMBER
200   DATA KEYSTROKE, REPAINT, RESIZED, RETURN, SELECTION, *
210   Events=0
220   LOOP
230     Sys_menu$(Events)="DISABLE "
240     READ Sys_menu$(Events)[9]
250   EXIT IF Sys_menu$(Events)[9]="*"
260     Events=Events+1
270   END LOOP
280   Sys_menu$(Events)="Quit "
290   REDIM Sys_menu$(0:Events)
300   Panel$="Panel"
310   Printer$=Panel$&"/Printer"
320   Slider$=Panel$&"/Slider"
330   Meter$=Panel$&"/Meter"
340   !
350   ASSIGN @Syst TO WIDGET "SYSTEM"
360   CONTROL @Syst;SET ("*LOAD":"SBEVNTSA.SCR","*QUEUE EVENTS":1)
370   CONTROL @Syst;SET ("*NAME":"Panel","SYSTEM MENU":Sys_menu$(*))
380   CONTROL @Syst;SET ("SIZE CONTROL":"RESIZE CHILDREN")
390   ON EVENT @Syst,"SYSTEM MENU" GOSUB Sys_menu
400   ON Events GOTO E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12
410   !
420 E12: ON EVENT @Syst,Sys_menu$(12)[POS(Sys_menu$(12)," ")+1] GOSUB Event_12
430 E11: ON EVENT @Syst,Sys_menu$(11)[POS(Sys_menu$(11)," ")+1] GOSUB Event_11
440 E10: ON EVENT @Syst,Sys_menu$(10)[POS(Sys_menu$(10)," ")+1] GOSUB Event_10
450 E9: ON EVENT @Syst,Sys_menu$(9)[POS(Sys_menu$(9)," ")+1] GOSUB Event_9
460 E8: ON EVENT @Syst,Sys_menu$(8)[POS(Sys_menu$(8)," ")+1] GOSUB Event_8
470 E7: ON EVENT @Syst,Sys_menu$(7)[POS(Sys_menu$(7)," ")+1] GOSUB Event_7
480 E6: ON EVENT @Syst,Sys_menu$(6)[POS(Sys_menu$(6)," ")+1] GOSUB Event_6
490 E5: ON EVENT @Syst,Sys_menu$(5)[POS(Sys_menu$(5)," ")+1] GOSUB Event_5
500 E4: ON EVENT @Syst,Sys_menu$(4)[POS(Sys_menu$(4)," ")+1] GOSUB Event_4
510 E3: ON EVENT @Syst,Sys_menu$(3)[POS(Sys_menu$(3)," ")+1] GOSUB Event_3
520 E2: ON EVENT @Syst,Sys_menu$(2)[POS(Sys_menu$(2)," ")+1] GOSUB Event_2
530 E1: ON EVENT @Syst,Sys_menu$(1)[POS(Sys_menu$(1)," ")+1] GOSUB Event_1
540 E0: ON EVENT @Syst,Sys_menu$(0)[POS(Sys_menu$(0)," ")+1] GOSUB Event_0
550   !
560   LOOP
570     WAIT FOR EVENT
580   END LOOP
590   !
600 Event_0: Cur_event=0
610   GOSUB Event_handler
620   RETURN
630   !
640 Event_1: Cur_event=1
650   GOSUB Event_handler
660   RETURN
670   !
680 Event_2: Cur_event=2
690   GOSUB Event_handler
700   RETURN
710   !
720 Event_3: Cur_event=3
730   GOSUB Event_handler
740   RETURN
750   !
760 Event_4: Cur_event=4
770   GOSUB Event_handler
780   RETURN
790   !
800 Event_5: Cur_event=5
810   GOSUB Event_handler
820   RETURN
830   !
840 Event_6: Cur_event=6
850   GOSUB Event_handler
860   RETURN
870   !
880 Event_7: Cur_event=7
890   GOSUB Event_handler
900   RETURN
910   !
920 Event_8: Cur_event=8
930   GOSUB Event_handler
940   RETURN
950   !
960 Event_9: Cur_event=9
970   GOSUB Event_handler
980   RETURN
990   !
1000 Event_10: Cur_event=10
1010  GOSUB Event_handler
1020  RETURN
1030  !
1040 Event_11: Cur_event=11
1050  GOSUB Event_handler
1060  RETURN
1070  !
1080 Event_12: Cur_event=12
1090  GOSUB Event_handler
1100  RETURN
1110  !
1120 Event_handler:!
1130  CONTROL @Syst;SET ("*EVENT NAME FILTER":Sys_menu$(Cur_event)[POS(Sys_menu$(Cur_event)," ")+1])
1140  LOOP
1150    STATUS @Syst;RETURN ("*QUEUED EVENT":Event$(*))
1160  EXIT IF NOT LEN(Event$(2))
1170    IF Event$(1)=Slider$ THEN
1180      STATUS @Syst;RETURN ("*NAME":Slider$,"VALUE":Value)
1190      CONTROL @Syst;SET ("*NAME":Meter$,"VALUE":Value)
1200    END IF
1210    CONTROL @Syst;SET ("*NAME":Printer$,"APPEND TEXT":Event$(1)&":"&Event$(2))
1220  END LOOP
1230  CONTROL @Syst;SET ("*EVENT NAME FILTER":"")
1240  RETURN
1250   !
1260 Sys_menu:!
1270  STATUS @Syst;RETURN ("*NAME":Panel$,"SYSTEM MENU EVENT":Sys_event)
1280  Space=POS(Sys_menu$(Sys_event)," ")
1290  SELECT Sys_menu$(Sys_event)[1,Space-1]
1300  CASE "ENABLE"
1310    ENABLE EVENT @Syst,Sys_menu$(Sys_event)[Space+1]
1320    Action$="DISABLE"
1330  CASE "DISABLE"
1340    DISABLE EVENT @Syst,Sys_menu$(Sys_event)[Space+1]
1350    Action$="ENABLE"
1360  CASE "Quit"
1370    STOP
1380  END SELECT
1390  CONTROL @Syst;SET ("*NAME":Printer$,"APPEND TEXT":Sys_menu$(Sys_event))
1400  Sys_menu$(Sys_event)=Action$&Sys_menu$(Sys_event)[Space]
1410  CONTROL @Syst;SET ("*NAME":"Panel","SYSTEM MENU":Sys_menu$(*))
1420  CONTROL @Syst;SET ("*EVENT NAME FILTER":"SYSTEM MENU")
1430  STATUS @Syst;RETURN ("*FLUSH QUEUED EVENTS":Events)
1440  CONTROL @Syst;SET ("*EVENT NAME FILTER":"")
1450  RETURN
1460  END