home *** CD-ROM | disk | FTP | other *** search
- {
- >Here's some neat lightbars that I made. REALLY easy to use, pretty
- >simple.
- >Feel free to use it, like I care.. Just don't yell at me fer what it
- >does. }
-
- Program lite;
-
- Uses crt;
-
- Type
-
- literec = Record {Litebar config rec}
- choices: Integer;
- menu: Array [1..25] Of String;
- othercolor, barcolor: Integer;
- End;
-
- Function litebar (lite: literec): Integer;
- Procedure HideCursor; Assembler;
- Asm
- MOV AX, $0100 {Hides cursor}
- MOV CX, $2607
- Int $10
- End;
- Procedure ShowCursor; Assembler;
- Asm
- MOV AX, $0100
- MOV CX, $0506 {Unhides cursor}
- Int $10
- End;
- Label ack, stop;
- Var
- on: Integer;
- X, Y: Integer;
- key: Char; {Various vars}
- okey: Byte;
- lastone: Integer;
- litesize: Integer;
-
- Begin
- hidecursor;
- X := WhereX; {Record starting positions}
- Y := WhereY;
- TextColor (lite. othercolor); {Change color}
- TextBackground (0); {Change background}
- litesize := 0;
- For on := 1 To lite. choices Do Begin {This for loop writes the options.}
- GotoXY (X, Y + on - 1);
- WriteLn (lite. menu [on] );
- If Length (lite. menu [on] ) > litesize Then litesize := Length
- (lite. menu [on] );
- End;
-
- For on := 1 To lite. choices Do Begin {This for loop makes the >lightbar}
- If Length (lite. menu [on] ) < litesize Then Begin {the same >length}
- Repeat
- lite. menu [on] := lite. menu [on] + ' ';
- Until Length (lite. menu [on] ) >= litesize;
- End;
- End;
- on := 1;
- lastone := 999;
- Repeat {Main loop}
- If lastone <> 999 Then Begin {redraw last option (reset background}
- GotoXY (X, Y + lastone - 1);
- TextBackground (0);
- WriteLn (lite. menu [lastone] );
- End;
- GotoXY (X, Y + on - 1); {go to option}
- TextBackground (lite. barcolor); {change color}
- WriteLn (lite. menu [on] ); {rewrite current option (background)}
- ack: Repeat key := ReadKey Until key In [#13, #0]; {get a key}
- If key = #0 Then Begin {was it extended? process it.}
- okey := Ord (ReadKey);
- If (okey = 72) Then Begin {up}
- If on = 1 Then Begin lastone := on; on := lite. choices End
- Else If on <> 1 Then Begin lastone := on; Dec (on); End;
- End
- Else If (okey = 80) Then Begin {down}
- If on = lite. choices Then Begin lastone := on; on := 1 End
- Else If (on < lite. choices) Then Begin lastone := on;
- Inc (on);
- End;
- End Else Goto ack;
- Continue;
- End Else
- If key = #13 Then Goto stop Else {enter}
- If key = ' ' Then If on = lite. choices Then on := 1 Else If
- on < lite. choices Then Dec (on) Else
- Goto ack;
- Until 5 < 4; {loop.}
- stop: {end it}
- litebar := on; {tell us what they picked}
- ShowCursor; {turn cursor back on}
- End;
-
- Var picked: Integer;
- litecfg: literec;
- Begin
- TextBackground (0); {Reset backround}
- ClrScr;
- GotoXY (4, 4); {where is menu going to be?}
- litecfg. choices := 4; {set choices}
- litecfg. menu [1] := 'Player Editor'; {--\ }
- litecfg. menu [2] := 'Software Editor'; { |____set choices}
- litecfg. menu [3] := 'CPU Editor'; { | }
- litecfg. menu [4] := 'Quit'; {--/ }
- litecfg. othercolor := 3; {Set foreground color}
- litecfg. barcolor := 1; {Set background color}
- picked := litebar (litecfg); {Run the lightbars!}
- TextBackground (0); {change background back (req'd)}
- ClrScr; {clear it}
- WriteLn ('You picked number ', picked, ', which is ', litecfg. menu
- [picked], '.');
- {/\ Tell them what they did /\}
- End.
-
-