[Back to COMM SWAG index] [Back to Main SWAG index] [Original]
{
For a good voting door I'd suggest using a scrolling bar to choose
like your choices, this is a demo from the upcomming v1.31a, but I'll
show it to you, because it's just nifty.
}
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
Program Linebar_demo;
Uses Jsmisc,Jsdoor,Asmmisc,Crt;
Const
Product = 'Line Bar Demo';
Version = '1.00a';
Release = 'Gamma';
Author = 'John Stephenson';
Procedure Hiya1;
var loop: byte;
begin
makebox(2,20,76,4,2,cyan shl 4+lightblue,true);
textattr := cyan shl 4+blue;
jsgotoxy(4,21); jswrite('Hiya!!!!!!!');
textattr := cyan shl 4+yellow;
jsgotoxy(4,22); jswrite('Press any key');
jsreadkey;
textattr := lightgray;
for loop := 20 to 23 do begin
jsgotoxy(2,loop);
jsclreol;
end;
end;
Const
Choices = 8;
Var
Select,Quit: boolean;
Choice,Lastchoice: byte;
ChoiceList: array[1..choices] of string[60];
Loop: byte;
Ch: Char;
CtrlSeq: String[10];
Procedure DrawChoice(num: byte);
Begin
jsgotoxy(11,num+7);
if choice = num then textattr := blue shl 4+lightgray
else textattr := lightgray;
jswrite(' '+choicelist[num]+#25' '+char(57-length(choicelist[num])));
End;
Begin
Fakedoorsys(doorsys);
Jsclrscr;
Textattr := blue shl 4+lightcyan;
Jswrite(' '+product+' '+version+' '+release+' by
'+author+avtclreol+avtlightcyan);
Makebox(10,5,60,4+choices,1,lightblue,false); jsgotoxy(12,6);
jswrite('Please use your arrow keys, and enter to select');
{ Best idea is not to create a typed constant when dealing with strings! }
{ Initialise them like this: }
Choicelist[1] := 'Hiya from linebar 1, enjoy this demo!';
Choicelist[2] := 'Hiya 2';
Choicelist[3] := 'Hiya 3';
Choicelist[4] := 'Hiya 4';
Choicelist[5] := 'Hiya 3';
Choicelist[6] := 'Hiya 4';
Choicelist[7] := 'Hiya 4';
Choicelist[8] := 'Quit';
Quit := False;
Choice := 1;
For loop := 1 to choices do drawchoice(loop);
Repeat
Select := False;
Repeat
Lastchoice := choice;
Ch := Jsreadkey;
Case ch of
#0 : CtrlSeq := Ch+jsreadkey; { eg #0#71 }
#22 : CtrlSeq := Ch+jsreadkey; { eg #22#4 }
#27 : begin
CtrlSeq := ch;
Ch := jsreadkey;
If ch = #27 then begin quit := true; CtrlSeq := ''; end
Else CtrlSeq := CtrlSeq+ch+jsreadkey;
End;
#13,#32: Select := true;
End;
If CtrlSeq <> '' then begin
For loop := tty to avatar do begin
If CtrlSeq = Cursormove.Up[loop] then begin dec(choice); CtrlSeq :=
''; end; If CtrlSeq = Cursormove.Down[loop] then begin inc(choice);
CtrlSeq := ''; end; If CtrlSeq = Cursormove.Left[loop] then begin
dec(choice); CtrlSeq := ''; end; If CtrlSeq = Cursormove.Right[loop]
then begin inc(choice); CtrlSeq := ''; end; If CtrlSeq =
Cursormove.Home[loop] then begin choice := 1; CtrlSeq := ''; end;
If CtrlSeq = Cursormove.Endkey[loop] then begin choice := choices;
CtrlSeq := ''; end; End;
CtrlSeq := '';
end;
If Choice > Choices then Choice := 1;
If Choice < 1 then Choice := Choices;
If Choice <> LastChoice then begin
Drawchoice(LastChoice);
Drawchoice(Choice);
End;
Until Select or Quit;
{ Process the choices }
If not Quit then begin
Case Choice of
1: hiya1;
choices: Quit := True;
end;
End;
Until Quit;
textattr := lightgray;
jsclrscr;
jswriteln('Thank you for looking at this demo!');
End.
[Back to COMM SWAG index] [Back to Main SWAG index] [Original]