HTBasic Help
×
Menu
Index

Example: Engine Monitor - Child Panel

 
10     ! *********************************************************************
20     ! Example: Engine Monitor - Child PANEL
30     !
40     ! This program creates a simulated engine monitor display
50     ! that shows Torque, Pressure, Dwell, Timing, and RPM for
60     ! a theoretical engine. A status log for updated values is
70     ! also included.
80     !
90     ! *********************************************************
100   !
110   DIM Buf$[200]
120   !
130   ! Create the main panel widget
140   !
150   ASSIGN @Panel TO WIDGET "PANEL";SET ("X":100,"Y":30,"WIDTH":400,"HEIGHT":320,"TITLE":" Example: Engine Monitor - Child PANEL","MAXIMIZABLE":1)
160   CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
170   ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
180   !
190   ASSIGN @M1lbl TO WIDGET "LABEL";SET ("X":5,"Y":5,"WIDTH":90,"HEIGHT":20,"VALUE":"Torque","BORDER":0),PARENT @Panel
200   ASSIGN @Meter1 TO WIDGET "METER";SET ("X":5,"Y":25,"WIDTH":90,"HEIGHT":160,"ARC WIDTH":3,"ORIENTATION":"RIGHT","SHOW LIMITS":0),PARENT @Panel
210   !
220   ASSIGN @B2lbl TO WIDGET "LABEL";SET ("X":125,"Y":5,"WIDTH":80,"HEIGHT":20,"VALUE":"Pressure","BORDER":0),PARENT @Panel
230   ASSIGN @Bar2 TO WIDGET "BAR";SET ("X":130,"Y":25,"WIDTH":60,"HEIGHT":100),PARENT @Panel
240   ASSIGN @B2dsp TO WIDGET "LABEL";SET ("X":130,"Y":125,"WIDTH":60,"HEIGHT":20,"BORDER":0),PARENT @Panel
250   !
260   ! Create a child PANEL that contains a bank of engine measurements
270   !
280   ASSIGN @Subpanel TO WIDGET "PANEL";PARENT @Panel,SET ("X":260,"Y":5,"WIDTH":95,"HEIGHT":145)
290   !
300   ASSIGN @Lbl1 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":0,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"Dwell")
310   ASSIGN @Disp1 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":20,"WIDTH":75,"HEIGHT":20)
320   !
330   ASSIGN @Label2 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":50,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"Timing")
340   ASSIGN @Disp2 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":70,"WIDTH":75,"HEIGHT":20)
350   !
360   ASSIGN @Label3 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":100,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"RPM")
370   ASSIGN @Disp3 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":120,"WIDTH":75,"HEIGHT":20)
380   !
390   ASSIGN @Lbl TO WIDGET "LABEL";SET ("X":130,"Y":150,"WIDTH":240,"HEIGHT":20,"VALUE":"Status Log","BORDER":0),PARENT @Panel
400   ASSIGN @Text TO WIDGET "PRINTER";SET ("X":130,"Y":170,"WIDTH":240,"HEIGHT":100),PARENT @Panel
410   !
420   Value=50
430   Siz=15
440 Loop_val: !
450   FOR I=1 TO 10000
460     IF Value<25 OR Value>=85 THEN Value=50
470     Torq=INT(Value+Siz*RND)
480     Pres=INT(Value+Siz*RND)
490     Dwell=INT(Value+Siz*RND)
500     Timing=INT(Value+Siz*RND)
510     Rpm=INT(Value+Siz*RND)
520     Value=INT(Value+Siz*(RND-.5))
530     !
540     CONTROL @Meter1;SET ("VALUE":Torq)
550     CONTROL @Bar2;SET ("VALUE":Pres)
560     CONTROL @B2dsp;SET ("VALUE":Pres)
570     CONTROL @Disp1;SET ("VALUE":Dwell)
580     CONTROL @Disp2;SET ("VALUE":Timing)
590     CONTROL @Disp3;SET ("VALUE":Rpm)
600     !
610     OUTPUT Buf$ USING "#,K,DDDD,3X,DDD,DDD,DDD";"Update #";I,Torq,Pres,Dwell
620     CONTROL @Text;SET ("APPEND TEXT":Buf$)
630   NEXT I
640   GOTO Loop_val
650   STOP
660 Finis: END