| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- program TestWindow;
- {$C-}
- {
- WINDOW DEMONSTRATION PROGRAM Version 1.00A
- This program demonstrates the use of windows on the IBM PC
- and true compatibles.
- PSEUDO CODE
- 1. MakeWindow - draws window boxes on the screen
- 2. repeat
- UpdateWindow 1 - scrolls the window contents up or
- down for each window.
- UpdateWindow 2
- UpdateWindow 3
- until a key is pressed
- 3. Reset to full screen window
- INSTRUCTIONS
- 1. Compile this program using the TURBO.COM compiler.
- 2. Type any key to exit the program.
- }
- const Windows = 3;
- Wtab : array [1..Windows,1..5] of Integer { X0,Y0,X1,Y1,LineNo }
- = ( ( 5, 2, 35, 11, 1),
- (45, 2, 75, 11, 1),
- ( 5, 15, 75, 23, 1) );
- Up = true;
- Down = false;
- type MaxString = string [255];
- var I : Integer;
- Ch : char;
- procedure Frame(UpperLeftX, UpperLeftY, LowerRightX, LowerRightY: Integer);
- var I : Integer;
- begin {Frame}
- GotoXY(UpperLeftX, UpperLeftY);
- Write(chr(218));
- for I := (UpperLeftX + 1) to (LowerRightX - 1) do
- begin
- Write(chr(196));
- end;
- 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
- begin
- Write(chr(196));
- end;
- Write(chr(217));
- end; {Frame}
- procedure MakeScreen;
- begin
- ClrScr;
- GotoXY(15,25);
- Write('TURBO PASCAL Window Demo - Press any key to stop');
- for I := 1 to Windows do
- begin
- Frame(Wtab[I,1] - 1, Wtab[I,2] - 1, Wtab[I,3] + 1, Wtab[I,4] + 1);
- end;
- end; {MakeScreen}
- function RandomStr(Len: Integer): MaxString;
- var S: MaxString;
- 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;
- RandomStr := S;
- end; {RandomStr}
- procedure SelectWindow(Win: Integer);
- begin
- Window(Wtab[Win,1], Wtab[Win,2], Wtab[Win,3], Wtab[Win,4])
- end; {SelectWindow}
- procedure UpdateWindow (Win,StringLen: integer;Scroll: boolean);
- begin
- LowVideo;
- SelectWindow(Win);
- GotoXY(1,1);
- if Scroll then
- begin
- DelLine;
- GotoXY(1, Wtab[Win,4] - Wtab[Win,2] + 1);
- end
- else
- InsLine;
- Write('Line ', Wtab[Win,5]:5,' ',chr(219),' ',RandomStr(StringLen));
- Wtab[Win,5] := Succ(Wtab[Win,5]);
- NormVideo;
- end; {UpdateWindow}
- procedure DrawWindows;
- begin
- repeat
- UpdateWindow(1,15,Up);
- UpdateWindow(2,15,Up);
- UpdateWindow(3,55,Down);
- until KeyPressed;
- Window(1,1,80,25);
- GotoXY(1,24);
- end; {DrawWindows}
- begin { Program body }
- MakeScreen;
- DrawWindows;
- end.
|