home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / 83win / data1.cab / Basic_Plus_Examples / TOGGLBTN < prev    next >
Encoding:
Text File  |  2001-03-02  |  4.0 KB  |  114 lines

  1. 10    ! **********************************************************
  2. 20    ! Example: TOGGLEBUTTON Widget
  3. 30    !
  4. 40    ! This program uses a TOGGLEBUTTON widget. It provides a
  5. 50    ! row of TOGGLEBUTTONS and lists the button and its state
  6. 60    ! as the button is pressed.
  7. 70    !
  8. 80    ! **********************************************************
  9. 90    !
  10. 100    ! Define colors:
  11. 110   !
  12. 120       INTEGER Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  13. 130       DATA 0,1,2,3,4,5,6,7
  14. 140       READ Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  15. 150   !
  16. 160       INTEGER Sts           ! Gets TOGGLEBUTTON value
  17. 170       DIM V1$[1],V2$[1],V3$[1]! Converts value to string
  18. 180   !
  19. 190       INTEGER Nlines,D(1:4) ! Used for display handling
  20. 200       INTEGER Dw,Dh         ! Gives display size
  21. 210       INTEGER X,Y,Pw,Ph,Iw,Ih! PANEL parameters
  22. 220       INTEGER R1,R2,C1,C2,C3! Coordinates for widgets
  23. 230       INTEGER Bh,Bw,Lw      ! Widget sizes
  24. 240   !
  25. 250       STATUS CRT,13;Nlines
  26. 260       GESCAPE CRT,3;D(*)
  27. 270       Dw=D(3)-D(1)
  28. 280       Dh=(D(4)-D(2))*((Nlines-7)/Nlines)
  29. 290   !
  30. 300       Ph=170       ! Interior height
  31. 310       Pw=280       ! Interior width
  32. 320       X=(Dw-Pw)/2  ! Center panel on screen
  33. 330       Y=(Dh-Ph)/2
  34. 340   !
  35. 350       CLEAR SCREEN
  36. 360       ASSIGN @Panel TO WIDGET "PANEL";SET ("VISIBLE":0)
  37. 370       CONTROL @Panel;SET ("MAXIMIZABLE":0,"RESIZABLE":0)
  38. 380       CONTROL @Panel;SET ("X":X,"Y":Y,"WIDTH":Pw,"HEIGHT":1.2*Ph)
  39. 390       CONTROL @Panel;SET ("TITLE":" Example: TOGGLEBUTTON Widget")
  40. 400       CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
  41. 410   !
  42. 420   ! Determine inside dimensions of PANEL
  43. 430   !
  44. 440       STATUS @Panel;RETURN ("INSIDE WIDTH":Iw,"INSIDE HEIGHT":Ih)
  45. 450   !
  46. 460       Gaph=Ih*.04
  47. 470       Gapw=Iw*.03
  48. 480       Bh=(Ih-3*Gaph)/2! Button height
  49. 490       Bw=(Iw-4*Gapw)/3! Button width
  50. 500       R1=Gaph      ! Top row
  51. 510       R2=R1+Bh+Gaph! Row 2 = row 1 + button height + gap
  52. 520       C1=Gapw      ! Left column
  53. 530       C2=C1+Bw+Gapw! Col 2 = col 1 + button width + gap
  54. 540       C3=C2+Bw+Gapw! Col 3 = col 2 + button width + gap
  55. 550       Lw=Bw*3+Gapw*2! Label width = 3 buttons plus gaps
  56. 560   !
  57. 570   ! Set up TOGGLEBUTTONS
  58. 580   !
  59. 590       ASSIGN @T1 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  60. 600       CONTROL @T1;SET ("X":C1,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  61. 610       CONTROL @T1;SET ("PEN":Blue)
  62. 620       CONTROL @T1;SET ("LABEL":"T1")
  63. 630   !
  64. 640       ASSIGN @T2 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  65. 650       CONTROL @T2;SET ("X":C2,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  66. 660       CONTROL @T2;SET ("PEN":Blue)
  67. 670       CONTROL @T2;SET ("LABEL":"T2")
  68. 680   !
  69. 690       ASSIGN @T3 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  70. 700       CONTROL @T3;SET ("X":C3,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  71. 710       CONTROL @T3;SET ("PEN":Blue)
  72. 720       CONTROL @T3;SET ("LABEL":"T3")
  73. 730   !
  74. 740   ! Create LABEL widget
  75. 750   !
  76. 760       ASSIGN @Label TO WIDGET "LABEL";PARENT @Panel
  77. 770       CONTROL @Label;SET ("X":C1,"Y":R2,"WIDTH":Lw,"HEIGHT":Bh)
  78. 780       CONTROL @Label;SET ("PEN":Red)
  79. 790   !
  80. 800   ! Set up events
  81. 810   !
  82. 820       ON EVENT @T1,"CHANGED" GOSUB Handler
  83. 830       ON EVENT @T2,"CHANGED" GOSUB Handler
  84. 840       ON EVENT @T3,"CHANGED" GOSUB Handler
  85. 850       ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
  86. 860   !
  87. 870   ! Turn on PANEL
  88. 880   !
  89. 890       GOSUB Handler
  90. 900       CONTROL @Panel;SET ("VISIBLE":1)
  91. 910   !
  92. 920   ! Main loop, wait for event
  93. 930   !
  94. 940       LOOP
  95. 950           WAIT FOR EVENT
  96. 960       END LOOP
  97. 970       STOP
  98. 980   !
  99. 990   ! Handlers for buttons
  100. 1000  !
  101. 1010  Handler:!
  102. 1020       STATUS @T1;RETURN ("VALUE":Sts)
  103. 1030       V1$=VAL$(Sts)
  104. 1040       STATUS @T2;RETURN ("VALUE":Sts)
  105. 1050       V2$=VAL$(Sts)
  106. 1060       STATUS @T3;RETURN ("VALUE":Sts)
  107. 1070       V3$=VAL$(Sts)
  108. 1080       CONTROL @Label;SET ("VALUE":"T1:"&V1$&" / T2:"&V2$&" / T3:"&V3$)
  109. 1090       RETURN
  110. 1100  !
  111. 1110  Finis:!
  112. 1120       ASSIGN @Panel TO *! Delete PANEL widget
  113. 1130       END
  114.