mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-28 00:23:52 +02:00
228 lines
6.1 KiB
ObjectPascal
228 lines
6.1 KiB
ObjectPascal
Program ocrt_demo;
|
|
{---------------------------------------------------------------------------
|
|
CncWare
|
|
(c) Copyright 1999-2000
|
|
---------------------------------------------------------------------------
|
|
Filename..: ocrt_demo.pp
|
|
Programmer: Ken J. Wright
|
|
Date......: 11/22/99
|
|
|
|
Purpose - Demonstrate the use of nCrt.
|
|
|
|
-------------------------------<< REVISIONS >>--------------------------------
|
|
Ver | Date | Prog| Description
|
|
-------+----------+-----+----------------------------------------------------
|
|
1.00 | 11/22/99 | kjw | Initial Release.
|
|
1.01 | 12/10/99 | kjw | Added OOP stuff.
|
|
1.02 | 12/13/99 | kjw | 1) Changed from nCrt to oCrt.
|
|
| 2) Renamed from ncrt_demo to ocrt_demo.
|
|
| 3) Added some standard crt code at beginning.
|
|
1.03 | 01/06/00 | kjw | Some minor changes for ncrt mods.
|
|
1.04 | 06/27/00 | kjw | Changes for ncrt mods.
|
|
------------------------------------------------------------------------------
|
|
}
|
|
uses oCrt;
|
|
var
|
|
win,win1,
|
|
stdscr : pwin;
|
|
s : string;
|
|
c : char;
|
|
i,j,k,x,y : integer;
|
|
|
|
var
|
|
win11,win22 : pnWindow;
|
|
win33,msgbox : TnWindow;
|
|
|
|
Begin
|
|
{ some nCrt standard in/out stuff, like crt }
|
|
TextColor(15);
|
|
TextBackground(1);
|
|
TextAttr := TextAttr + blink;
|
|
ClrScr;
|
|
GotoXY(2,35);
|
|
Writeln(1.0:0:4,' This should be blinking text');
|
|
Window(10,10,70,15);
|
|
TextAttr := TextAttr - blink;
|
|
TextBackground(2);
|
|
ClrScr;
|
|
s := ' : ';
|
|
for i := 1 to 6 do
|
|
writeln(i:0,s,'No blinking here');
|
|
writeln('Press Enter');
|
|
readln(s);
|
|
TextBackground(3);
|
|
Write('input a number [i]: ');
|
|
Readln(i);
|
|
Write('input two numbers [j k]: ');
|
|
Readln(j,k);
|
|
Window(20,11,60,16);
|
|
TextBackground(0);
|
|
TextColor(15);
|
|
ClrScr;
|
|
writeln('i: ',i);
|
|
writeln('j: ',j);
|
|
writeln('k: ',k);
|
|
Write('Press a key: ');
|
|
readkey;
|
|
TextMode(LastMode);
|
|
write('Press a key: ');
|
|
repeat until keypressed;
|
|
while keypressed do readkey;
|
|
|
|
{ now some oCrt basics }
|
|
stdscr := nscreen;
|
|
nClrScr(stdscr,7);
|
|
nDrawBox(stdscr,btSingle,1,1,80,3,31);
|
|
nFWrite(27,2,30,0,'nCrt Demonstration Program');
|
|
nNewWindow(win1,9,9,71,16);
|
|
nClrScr(win1,95);
|
|
nWriteScr(win1,3,2,95,'This is a background window.');
|
|
nWriteScr(win1,10,3,95,'It was built first, then displayed later.');
|
|
nFWrite(stdscr,1,24,15,80,'Enter some text, press [Enter]');
|
|
nWindow(win,10,10,70,15);
|
|
nClrScr(win,31);
|
|
nGotoXY(win,1,1);
|
|
s := nReadln(win);
|
|
If s <> 'oop' Then Begin { skip right to OOP section? }
|
|
nFWrite(stdscr,1,24,15,80,'Enter some more text, press [Enter]');
|
|
nGotoXY(win,nWhereX(win),nWhereY(win));
|
|
s := nReadln(win);
|
|
nFWrite(stdscr,1,24,79,80,'Please wait...');
|
|
nGotoXY(win,1,1);
|
|
Delay(500);
|
|
nDelLine(win);
|
|
Delay(500);
|
|
nInsLine(win);
|
|
Delay(500);
|
|
nFrame(win1);
|
|
nRefresh(win1);
|
|
Delay(4000);
|
|
nRefresh(win);
|
|
Delay(2000);
|
|
{ force nCrt to use full screen }
|
|
nSetActiveWin(stdscr);
|
|
ClrScr;
|
|
nFWrite(1,24,14,80,'Enter even more text, press [Enter]');
|
|
s := nReadln(stdscr);
|
|
nClrScr(win,47);
|
|
nFWrite(1,24,11,80,'Press some keys, followed by [Esc]');
|
|
nGotoXY(win,5,1);
|
|
x := nWhereX(win);
|
|
y := nWhereY(win);
|
|
i := 0;
|
|
{ turn off oCrt keyboard echo }
|
|
nEcho(false);
|
|
repeat
|
|
c := nReadkey(win);
|
|
DelLine;
|
|
inc(i);
|
|
until (c = #27) or (i >= 8);
|
|
While i > 0 Do Begin
|
|
InsLine;
|
|
dec(i);
|
|
End;
|
|
{ turn on oCrt keyboard echo }
|
|
nEcho(true);
|
|
str(x:0,s);
|
|
nWrite(win,'x = '+s+', ');
|
|
str(y:0,s);
|
|
nWrite(win,'y = '+s);
|
|
nWriteln(stdscr,'press a key...');
|
|
readkey;
|
|
nDrawBox(stdscr,btSingle,11,11,69,14,63);
|
|
nFWrite(30,11,79,49,' nCrt Demo Program');
|
|
nDelWindow(win);
|
|
nDelWindow(win1);
|
|
nWindow(win,2,2,79,24);
|
|
nFrame(stdscr);
|
|
nFrame(win);
|
|
nDelWindow(win);
|
|
End;
|
|
{ and now for some object oCrt }
|
|
win := nscreen;
|
|
New(win11,Init(1,1,nStdScr.Cols,nStdScr.Rows,31,true,30));
|
|
win11^.PutHeader(' Now for some OOP with nCrt! ',79,center);
|
|
win11^.DrawBox(1,1,1,78,3,62);
|
|
New(win22,Init(20,7,60,17,47,false,0));
|
|
win33.Init(30,15,50,20,79,true,78);
|
|
win33.PutHeader(' Little Window ',15,right);
|
|
Writeln('And here is window #3');
|
|
win11^.Show;
|
|
GotoXY(2,2);
|
|
Write('Please press a key...');
|
|
ReadKey;
|
|
msgbox.init(25,11,55,13,47,true,47);
|
|
s := 'Please enter a string';
|
|
msgbox.FWrite((msgbox.cols-length(s)) div 2,1,46,0,s);
|
|
msgbox.Show;
|
|
win11^.Active;
|
|
GotoXY(1,10);
|
|
msgbox.Show;
|
|
win11^.Active;
|
|
Readln(s);
|
|
msgbox.Hide;
|
|
win22^.Show;
|
|
Writeln(s);
|
|
Delay(2000);
|
|
win11^.Hide;
|
|
win22^.Active;
|
|
Writeln('Hiding window 1...');
|
|
Delay(2000);
|
|
win33.Show;
|
|
Delay(2000);
|
|
win11^.Show;
|
|
Writeln('Showing window 1');
|
|
win22^.Show;
|
|
Writeln('Showing window 2');
|
|
win33.Show;
|
|
Write('Showing window 3');
|
|
nKeypressed(2000);
|
|
While Keypressed Do Readkey;
|
|
win11^.Hide;
|
|
win33.Active;
|
|
Write('Hiding window 1');
|
|
win22^.PutFrame(62);
|
|
win22^.PutHeader(' New frame color ',63,center);
|
|
win22^.Show;
|
|
win33.Show;
|
|
nKeypressed(3000);
|
|
While Keypressed Do Readkey;
|
|
win22^.Hide;
|
|
win33.Active;
|
|
Write('Hiding window 2');
|
|
nKeypressed(2000);
|
|
While Keypressed Do Readkey;
|
|
win33.SetColor(47);
|
|
nKeypressed(2000);
|
|
While Keypressed Do Readkey;
|
|
x := 30;
|
|
y := 15;
|
|
win33.ClrScr;
|
|
for i := 1 to 11 do Begin
|
|
TextAttr := win33.GetColor;
|
|
dec(x);
|
|
dec(y);
|
|
str(i:0,s);
|
|
win33.Move(x,y);
|
|
Writeln('Moved by '+s);
|
|
nFWrite(stdscr,1,nStdScr.Rows,63,80,'Moved by '+s);
|
|
Delay(250);
|
|
End;
|
|
win33.Align(center,none);
|
|
win33.PutHeader('Left Header',14,left);
|
|
win33.Show;
|
|
Delay(1000);
|
|
win33.PutHeader('Right Header',14,right);
|
|
win33.Show;
|
|
Delay(1000);
|
|
win33.PutHeader('Center Header',15,center);
|
|
win33.Show;
|
|
Delay(2000);
|
|
Dispose(win11,Done);
|
|
Dispose(win22,Done);
|
|
win33.Done;
|
|
msgbox.Done;
|
|
NormVideo;
|
|
ClrScr;
|
|
End.
|