home *** CD-ROM | disk | FTP | other *** search
-
- 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;