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.
|
||
|