home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
PASCAL
/
MADTRB21.ZIP
/
FLIPFLD.SRC
< prev
next >
Wrap
Text File
|
1985-06-09
|
2KB
|
52 lines
PROCEDURE FLIPFIELD(X,Y : INTEGER;
VAR STATE : BOOLEAN;
TRUSTRING : STRING30;
FALSTRING : 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(TRUSTRING) { Write TRUSTRING for NOWSTATE = TRUE }
END
ELSE
BEGIN
GOTOXY(X,Y);
WRITE(FALSTRING); { Write FALSTRING 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(TRUSTRING)>LENGTH(FALSTRING) THEN { Adjust blanker }
BLANKER[0]:=CHR(LENGTH(TRUSTRING)) ELSE { string for lengths }
BLANKER[0]:=CHR(LENGTH(FALSTRING)); { 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;