home *** CD-ROM | disk | FTP | other *** search
- {
- ERIC MILLER
-
- > My question is this: In TP, the outtextxy is supposed to change the
- > CP (current pointer) to the location given in x,y. When you execute a
- > readln after a outtextxy or even and outtext, the program always
- > starts at 0,0.. Is there a way to set the CP where the readln will
- > recognize it?
-
- Here's a demo of a procedure called ReadlnXY; it reads
- a string in graphics mode using BGI support.
- }
-
- PROGRAM Graphics_Readln;
-
- Uses
- Crt, Graph;
-
- PROCEDURE ReadlnXY(X, Y: Integer; VAR S: String);
- VAR
- Ch : Char; { key from keyboard }
- Done : boolean; { our flag for quiting }
- CurColor : word; { color to write text in }
- OldX : Integer; { old x }
-
- BEGIN
- S := '';
- CurColor := GetColor;
- MoveTo(X, Y);
- Done := False;
- WHILE NOT Done DO
- BEGIN
- Ch := Readkey; { get a single key }
-
- CASE Ch of
- #0 : { extra key - two chars - let's ignore them }
- Ch := Readkey;
-
- #13 : { return key }
- Done := true; { we got our string, let's go }
-
- #32..#126: { ASCII 32 (space) through 126 (tilde) }
- BEGIN
- OutText(Ch);
- S := Concat(S, Ch);
- END;
-
- #8 : IF Length(S) > 0 THEN
- BEGIN
- { move back to last character }
- OldX := GetX - TextHeight(S[Length(S)]);
- MoveTo(OldX, GetY);
- { over write last character }
- SetColor(0);
- OutText(S[Length(S)]);
- SetColor(CurColor);
- MoveTo(OldX, GetY);
- { remove last character from the string }
- Delete(S, Length(S), 1);
- END;
-
- END;
- END;
- END; { ReadlnXY }
-
-
-
- VAR
- GraphMode, GraphDriver: Integer;
- Name, PathToDriver: String;
-
- BEGIN
-
- GraphDriver := VGA; { VGA }
- GraphMode := VGAHi; { 640x480x16 }
- PathToDriver := 'D:\BP\BGI'; { path to EGAVGA.BGI }
- { you can make this program work with EGA 640x350x16 -
- it requires 640 wide and 16 colors to work for this
- example, but ReadlnXY should work in any graphics mode }
- InitGraph(GraphDriver, GraphMode, PathToDriver); { set graphics mode }
-
- SetTextStyle(DefaultFont, HorizDir, 2);
-
- SetColor(12);
-
- OutTextXY(63, 63, 'Please enter your name: ');
- SetColor(13);
- ReadlnXY(63 ,95, Name);
- CloseGraph;
- Write('The name you entered was: ');
- Writeln(Name);
- END.