REM Sample of a QuitBox. v1.1a PD
2017.
-ejo
' declare screen save arrays
' declare box coordinates
' declare mouse variables
' declare box colors
' declare ascii variables
' declare color constants
' set box colors
QuitBoxBorderColor = Yellow
QuitBoxTitleColor = HighWhite
QuitBoxTextColor = HighWhite
QuitBoxButton1Color = HighWhite
QuitBoxButton2Color = White
QuitBoxBackGround = Blue
QuitBoxButtonBackGround = Black
' set ascii characters
Hline = 205
Vline = 186
ULcorner = 201
URcorner = 187
LLcorner = 200
LRcorner = 188
' declare box coordinates.
Xcoor3 = 10
Ycoor3 = 10
' set box button constants
' start input loop
PRINT "Enter HELP or QUIT or TEST";
PRINT "Mouse: Click on <OK> or <Cancel>" PRINT " Click on title, drag box." PRINT "Keyboard: Enter for OK/Cancel, Escape to cancel," PRINT " Cursor left/right, tab/shift-tab to select button," PRINT " Control-<cursor> to move box." PRINT " Alt-<cursor> to move box 4 chars." PRINT "Colors: Ctrl-A Cycle box background, Ctrl-B Cycle button background," PRINT " Ctrl-D Cycle border, Ctrl-E Cycle title, Ctrl-F Cycle text," PRINT " Ctrl-G Cycle OK button, Ctrl-H Cycle Cancel button." X = QuitBox(OKcancel, " Quit ", "Quit. Are you sure?")
' Input: Buttons
' 1 = both buttons, 2 = ok, 3 = cancel
FUNCTION QuitBox
(Buttons
, QuitBoxTitle$
, QuitBoxText$
) ' store screen area.
' reset mouse buttons
MouseButton1 = 0
MouseButton2 = 0
MouseButton3 = 0
X = ClearMouse
' draw box
BoxButton = 1
BoxButton = 2
' wait for keypress or mouse
BoxButton = 1
BoxButton = 2
BoxButton = 2
BoxButton = 2
BoxButton = 1
QuitBoxBackGround = QuitBoxBackGround + 1
QuitBoxBackGround = 0
QuitBoxButtonBackGround = QuitBoxButtonBackGround + 1
IF QuitBoxButtonBackGround
= 8 THEN QuitBoxButtonBackGround = 0
QuitBoxBorderColor = QuitBoxBorderColor + 1
IF QuitBoxBorderColor
= 16 THEN QuitBoxBorderColor = 0
QuitBoxTitleColor = QuitBoxTitleColor + 1
IF QuitBoxTitleColor
= 16 THEN QuitBoxTitleColor = 0
QuitBoxTextColor = QuitBoxTextColor + 1
QuitBoxTextColor = 0
QuitBoxButton1Color = QuitBoxButton1Color + 1
IF QuitBoxButton1Color
= 16 THEN QuitBoxButton1Color = 0
QuitBoxButton2Color = QuitBoxButton2Color + 1
IF QuitBoxButton2Color
= 16 THEN QuitBoxButton2Color = 0
CASE 75, 15 ' left/shift-tab BoxButton = 1
BoxButton = 2
BoxButton = 2
BoxButton = 1
Xcoor3 = Xcoor3 - 1
Xcoor3 = Xcoor3 + 1
Ycoor3 = Ycoor3 - 1
Ycoor3 = Ycoor3 + 1
Xcoor3 = Xcoor3 - 4
Xcoor3 = 1
Xcoor3 = Xcoor3 + 4
Xcoor3 = 18
Ycoor3 = Ycoor3 - 4
Ycoor3 = 1
Ycoor3 = Ycoor3 + 4
Ycoor3 = 49
X = MouseDriver
' hover over titlebar
IF MouseY
>= Ycoor3
AND MouseY
<= Ycoor3
+ 31 THEN ' store mouse XY during click
MouseTempX = MouseX
MouseTempY = MouseY
X = MouseDriver
MoveBox = 0
' difference in mouse X
Xcoor3 = MouseX
MouseTempX = MouseX
MoveBox = -1
' difference in mouse Y
MoveY = Ycoor3 + (MouseY - MouseTempY)
Ycoor3 = MoveY
MouseTempY = MouseY
MoveBox = -1
' move box
IF MouseX
= Xcoor3
+ 4 THEN ' click on button IF MouseY
>= Ycoor3
+ 2 AND MouseY
<= Ycoor3
+ 5 THEN BoxButton = 1
IF MouseY
>= Ycoor3
+ 8 AND MouseY
<= Ycoor3
+ 15 THEN BoxButton = 2
IF MouseX
= Xcoor3
+ 4 THEN ' mouseover button IF MouseY
>= Ycoor3
+ 2 AND MouseY
<= Ycoor3
+ 5 THEN BoxButton = 1
IF MouseY
>= Ycoor3
+ 8 AND MouseY
<= Ycoor3
+ 15 THEN BoxButton = 2
' restore screen area.
QuitBox = -1
QuitBox = 0
' draw box
DrawQuitBox:
COLOR QuitBoxBorderColor
, QuitBoxBackGround
FOR RowX1
= Xcoor3
+ 1 TO Xcoor3
+ 6
' display box title
XC
= 16 - LEN(QuitBoxTitle$
) / 2 ' center of titlebarXC = Ycoor3 + XC
' display quit text
LOCATE Xcoor3
+ 2, Ycoor3
+ 2, 0
' display buttuns
DrawQuitBoxButtons:
LOCATE Xcoor3
+ 4, Ycoor3
+ 2, 0 COLOR QuitBoxButton1Color
, QuitBoxButtonBackGround
LOCATE Xcoor3
+ 4, Ycoor3
+ 8, 0 COLOR QuitBoxButton2Color
, QuitBoxButtonBackGround
LOCATE Xcoor3
+ 4, Ycoor3
+ 8, 0 COLOR QuitBoxButton1Color
, QuitBoxButtonBackGround
LOCATE Xcoor3
+ 4, Ycoor3
+ 2, 0 COLOR QuitBoxButton2Color
, QuitBoxButtonBackGround
' screen save
TempZ1
= SCREEN(Var1
, Var2
) ' screen char TempZ2
= SCREEN(Var1
, Var2
, 1) ' char color TempArrayY((Var1 - 1) * 80 + Var2) = TempZ1
TempArrayZ((Var1 - 1) * 80 + Var2) = TempZ2
' screen restore
VarB
= INT(TempArrayZ
((Var1
- 1) * 80 + Var2
) / 16) VarF
= TempArrayZ
((Var1
- 1) * 80 + Var2
) MOD 16 TempZ1 = TempArrayY((Var1 - 1) * 80 + Var2)
REM processes mouse activity.
MouseX = 0: MouseY = 0
X1 = X: Y1 = Y
MouseX = Y: MouseY = X ' X,Y are reversed
MousePressed = -1
MouseX = Y1
MouseY = X1
MousePressed = -1
MouseX = Y1
MouseY = X1
MousePressed = -1
MousePressed = -1