112 lines
2.6 KiB
Plaintext
112 lines
2.6 KiB
Plaintext
|
program TestWindow;
|
|||
|
{$C-}
|
|||
|
|
|||
|
const
|
|||
|
Windows = 3;
|
|||
|
Wtab : array[1..Windows,1..5] of Integer
|
|||
|
= (( 5, 2, 35, 11, 1), { X0,Y0,X1,Y1,LineNo }
|
|||
|
(45, 2, 75, 11, 1),
|
|||
|
( 5, 15, 75, 23, 1)
|
|||
|
);
|
|||
|
type
|
|||
|
String255 = String[255];
|
|||
|
|
|||
|
var
|
|||
|
i : Integer;
|
|||
|
Ch : Char;
|
|||
|
|
|||
|
|
|||
|
procedure Frame(UpperLeftX, UpperLeftY, LowerRightX, LowerRightY: Integer);
|
|||
|
var
|
|||
|
i: Integer;
|
|||
|
begin
|
|||
|
GotoXY(UpperLeftX, UpperLeftY); Write(chr(218));
|
|||
|
for i:=UpperLeftX+1 to LowerRightX-1 do Write(chr(196));
|
|||
|
Write(chr(191));
|
|||
|
for i:=UpperLeftY+1 to LowerRightY-1 do
|
|||
|
begin
|
|||
|
GotoXY(UpperLeftX , i); Write(chr(179));
|
|||
|
GotoXY(LowerRightX, i); Write(chr(179));
|
|||
|
end;
|
|||
|
GotoXY(UpperLeftX, LowerRightY);
|
|||
|
Write(chr(192));
|
|||
|
for i:=UpperLeftX+1 to LowerRightX-1 do Write(chr(196));
|
|||
|
Write(chr(217));
|
|||
|
end { Frame };
|
|||
|
|
|||
|
|
|||
|
function RanStr(Len: Integer): String255;
|
|||
|
var
|
|||
|
S: String255;
|
|||
|
i: Integer;
|
|||
|
begin
|
|||
|
S[0]:=Chr(Len);
|
|||
|
for Len:=1 to Len do
|
|||
|
begin
|
|||
|
repeat i:=Random(255) until not (Chr(I) in[^@,^G,^H,^J,^M]);
|
|||
|
S[Len]:=Chr(i);
|
|||
|
end;
|
|||
|
RanStr:=S;
|
|||
|
end { RanStr };
|
|||
|
|
|||
|
|
|||
|
procedure SelectWindow(Win: Integer);
|
|||
|
begin
|
|||
|
Window(Wtab[Win,1], Wtab[Win,2], Wtab[Win,3], Wtab[Win,4])
|
|||
|
end { SelectWindow };
|
|||
|
|
|||
|
|
|||
|
procedure Window1;
|
|||
|
begin
|
|||
|
LowVideo;
|
|||
|
SelectWindow(1);
|
|||
|
GotoXY(1,1);
|
|||
|
DelLine;
|
|||
|
GotoXY(1, Wtab[1,4]-Wtab[1,2]+1);
|
|||
|
Write('Line ', Wtab[1,5]:5,' ',chr(219),' ',RanStr(15));
|
|||
|
Wtab[1,5]:=Succ(Wtab[1,5]);
|
|||
|
NormVideo;
|
|||
|
end { Window1 };
|
|||
|
|
|||
|
procedure Window2;
|
|||
|
begin
|
|||
|
LowVideo;
|
|||
|
SelectWindow(2);
|
|||
|
GotoXY(1,1);
|
|||
|
DelLine;
|
|||
|
GotoXY(1, Wtab[2,4]-Wtab[2,2]+1);
|
|||
|
Write('Line ', Wtab[2,5]:5,' ',chr(219),' ',RanStr(15));
|
|||
|
Wtab[2,5]:=Succ(Wtab[2,5]);
|
|||
|
NormVideo;
|
|||
|
end { Window2 };
|
|||
|
|
|||
|
|
|||
|
procedure Window3;
|
|||
|
begin
|
|||
|
LowVideo;
|
|||
|
SelectWindow(3);
|
|||
|
GotoXY(1,1);
|
|||
|
InsLine;
|
|||
|
WriteLn('Line ', Wtab[3,5]:5,' ',chr(219),' ',RanStr(55));
|
|||
|
Wtab[3,5]:=Succ(Wtab[3,5]);
|
|||
|
NormVideo;
|
|||
|
end { Window3 };
|
|||
|
|
|||
|
begin
|
|||
|
GotoXY(15,25);
|
|||
|
Write('TURBO PASCAL Window Demo - Press any key to stop');
|
|||
|
|
|||
|
for i:=1 to Windows do
|
|||
|
Frame(Wtab[i,1]-1, Wtab[i,2]-1, Wtab[i,3]+1, Wtab[i,4]+1);
|
|||
|
|
|||
|
repeat
|
|||
|
Window1;
|
|||
|
Window2;
|
|||
|
Window3;
|
|||
|
until KeyPressed;
|
|||
|
Read(KBD, Ch);
|
|||
|
Window(1,1,80,25);
|
|||
|
GotoXY(1,24);
|
|||
|
|
|||
|
end.
|
|||
|
|