Category : Pascal Source Code
Archive   : CMPLTPAS.ZIP
Filename : FLIPFLD.SRC
{ }
{ Filename : FLIPFLD.SRC -- Last Modified 7/14/88 }
{ }
{ This routine facilitates entry of "toggle" fields--fields }
{ that have one of only two different values: Male/Female, }
{ Citizen/Non-citizen, etc. You specify an X,Y position for }
{ the field, a string for each of the True and False case, and }
{ an initial Boolean value that specifies which of the two }
{ alternatives will be initially displayed. Pressing ESC }
{ during entry changes nothing and sets the ESC parm to True. }
{ Whichever state is displayed at the point the user presses }
{ Return is the Boolean value returned in VAR parm State. }
{ }
{ From: COMPLETE TURBO PASCAL 5.0 by Jeff Duntemann }
{ Scott, Foresman & Co., Inc. 1988 ISBN 0-673-38355-5 }
{--------------------------------------------------------------}
PROCEDURE FlipField(X,Y : Integer;
VAR State : Boolean;
TrueString : String30;
FalseString : String30;
VAR Escape : Boolean);
VAR Blanker : String80;
KeyStroke : 0..255;
WorkState : Boolean;
Ch : Char;
PROCEDURE ShowState(NowState : Boolean);
BEGIN
GotoXY(X,Y); Write(Blanker); { Erase the old label }
IF NowState THEN
BEGIN
GotoXY(X,Y);
Write(TrueString) { Write TrueString for NowState = True }
END
ELSE
BEGIN
GotoXY(X,Y);
Write(FalseString); { Write FalseString for NowState = False }
END
END;
BEGIN
Escape := False; Ch := Chr(0);
LowVideo; { Use highlighting }
FillChar(Blanker,SizeOf(Blanker),' '); { Set up Blanker String }
WorkState:=State; { Temporary Boolean }
IF Length(TrueString)>Length(FalseString) THEN { Adjust Blanker }
Blanker[0] := Chr(Length(TrueString)) ELSE { String for lengths }
Blanker[0] := Chr(Length(FalseString)); { of meaning labels }
ShowState(WorkState); { Display initial label }
REPEAT
WHILE NOT KeyStat(Ch) DO BEGIN {NULL} END; { Calls KeyStat... }
KeyStroke := Ord(Ch);
IF KeyStroke = 27 THEN Escape := True ELSE
IF KeyStroke<>13 THEN WorkState := NOT WorkState;
ShowState(WorkState);
UNTIL (KeyStroke=13) OR Escape; { ...until CR or ESC is pressed }
IF NOT Escape THEN State:=WorkState; { Update State if CR }
NormVideo;
ShowState(State); { Redisplay State in non-highlighted text }
END;
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/