1Program ocrt_demo;
2{---------------------------------------------------------------------------
3                                 CncWare
4                         (c) Copyright 1999-2000
5 ---------------------------------------------------------------------------
6  Filename..: ocrt_demo.pp
7  Programmer: Ken J. Wright
8  Date......: 11/22/99
9
10  Purpose - Demonstrate the use of nCrt.
11
12-------------------------------<< REVISIONS >>--------------------------------
13  Ver  |   Date   | Prog| Description
14-------+----------+-----+----------------------------------------------------
15  1.00 | 11/22/99 | kjw | Initial Release.
16  1.01 | 12/10/99 | kjw | Added OOP stuff.
17  1.02 | 12/13/99 | kjw | 1) Changed from nCrt to oCrt.
18                        | 2) Renamed from ncrt_demo to ocrt_demo.
19                        | 3) Added some standard crt code at beginning.
20  1.03 | 01/06/00 | kjw | Some minor changes for ncrt mods.
21  1.04 | 06/27/00 | kjw | Changes for ncrt mods.
22------------------------------------------------------------------------------
23}
24uses oCrt;
25var
26   win,win1,
27   stdscr : pwin;
28   s : string;
29   c : char;
30   i,j,k,x,y : integer;
31
32var
33   win11,win22 : pnWindow;
34   win33,msgbox : TnWindow;
35
36Begin
37   { some nCrt standard in/out stuff, like crt }
38   TextColor(15);
39   TextBackground(1);
40   TextAttr := TextAttr + blink;
41   ClrScr;
42   GotoXY(2,35);
43   Writeln(1.0:0:4,' This should be blinking text');
44   Window(10,10,70,15);
45   TextAttr := TextAttr - blink;
46   TextBackground(2);
47   ClrScr;
48   s := ' : ';
49   for i := 1 to 6 do
50   writeln(i:0,s,'No blinking here');
51   writeln('Press Enter');
52   readln(s);
53   TextBackground(3);
54   Write('input a number [i]: ');
55   Readln(i);
56   Write('input two numbers [j k]: ');
57   Readln(j,k);
58   Window(20,11,60,16);
59   TextBackground(0);
60   TextColor(15);
61   ClrScr;
62   writeln('i: ',i);
63   writeln('j: ',j);
64   writeln('k: ',k);
65   Write('Press a key: ');
66   readkey;
67   TextMode(LastMode);
68   write('Press a key: ');
69   repeat until keypressed;
70   while keypressed do readkey;
71
72   { now some oCrt basics }
73   stdscr := nscreen;
74   nClrScr(stdscr,7);
75   nDrawBox(stdscr,btSingle,1,1,80,3,31);
76   nFWrite(27,2,30,0,'nCrt Demonstration Program');
77   nNewWindow(win1,9,9,71,16);
78   nClrScr(win1,95);
79   nWriteScr(win1,3,2,95,'This is a background window.');
80   nWriteScr(win1,10,3,95,'It was built first, then displayed later.');
81   nFWrite(stdscr,1,24,15,80,'Enter some text, press [Enter]');
82   nWindow(win,10,10,70,15);
83   nClrScr(win,31);
84   nGotoXY(win,1,1);
85   s := nReadln(win);
86   If s <> 'oop' Then Begin { skip right to OOP section? }
87      nFWrite(stdscr,1,24,15,80,'Enter some more text, press [Enter]');
88      nGotoXY(win,nWhereX(win),nWhereY(win));
89      s := nReadln(win);
90      nFWrite(stdscr,1,24,79,80,'Please wait...');
91      nGotoXY(win,1,1);
92      Delay(500);
93      nDelLine(win);
94      Delay(500);
95      nInsLine(win);
96      Delay(500);
97      nFrame(win1);
98      nRefresh(win1);
99      Delay(4000);
100      nRefresh(win);
101      Delay(2000);
102      { force nCrt to use full screen }
103      nSetActiveWin(stdscr);
104      ClrScr;
105      nFWrite(1,24,14,80,'Enter even more text, press [Enter]');
106      s := nReadln(stdscr);
107      nClrScr(win,47);
108      nFWrite(1,24,11,80,'Press some keys, followed by [Esc]');
109      nGotoXY(win,5,1);
110      x := nWhereX(win);
111      y := nWhereY(win);
112      i := 0;
113      { turn off oCrt keyboard echo }
114      nEcho(false);
115      repeat
116         c := nReadkey(win);
117         DelLine;
118         inc(i);
119      until (c = #27) or (i >= 8);
120      While i > 0 Do Begin
121         InsLine;
122         dec(i);
123      End;
124      { turn on oCrt keyboard echo }
125      nEcho(true);
126      str(x:0,s);
127      nWrite(win,'x = '+s+', ');
128      str(y:0,s);
129      nWrite(win,'y = '+s);
130      nWriteln(stdscr,'press a key...');
131      readkey;
132      nDrawBox(stdscr,btSingle,11,11,69,14,63);
133      nFWrite(30,11,79,49,' nCrt Demo Program');
134      nDelWindow(win);
135      nDelWindow(win1);
136      nWindow(win,2,2,79,24);
137      nFrame(stdscr);
138      nFrame(win);
139      nDelWindow(win);
140   End;
141   { and now for some object oCrt }
142   win := nscreen;
143   New(win11,Init(1,1,nStdScr.Cols,nStdScr.Rows,31,true,30));
144   win11^.PutHeader(' Now for some OOP with nCrt! ',79,center);
145   win11^.DrawBox(1,1,1,78,3,62);
146   New(win22,Init(20,7,60,17,47,false,0));
147   win33.Init(30,15,50,20,79,true,78);
148   win33.PutHeader(' Little Window ',15,right);
149   Writeln('And here is window #3');
150   win11^.Show;
151   GotoXY(2,2);
152   Write('Please press a key...');
153   ReadKey;
154   msgbox.init(25,11,55,13,47,true,47);
155   s := 'Please enter a string';
156   msgbox.FWrite((msgbox.cols-length(s)) div 2,1,46,0,s);
157   msgbox.Show;
158   win11^.Active;
159   GotoXY(1,10);
160   msgbox.Show;
161   win11^.Active;
162   Readln(s);
163   msgbox.Hide;
164   win22^.Show;
165   Writeln(s);
166   Delay(2000);
167   win11^.Hide;
168   win22^.Active;
169   Writeln('Hiding window 1...');
170   Delay(2000);
171   win33.Show;
172   Delay(2000);
173   win11^.Show;
174   Writeln('Showing window 1');
175   win22^.Show;
176   Writeln('Showing window 2');
177   win33.Show;
178   Write('Showing window 3');
179   nKeypressed(2000);
180   While Keypressed Do Readkey;
181   win11^.Hide;
182   win33.Active;
183   Write('Hiding window 1');
184   win22^.PutFrame(62);
185   win22^.PutHeader(' New frame color ',63,center);
186   win22^.Show;
187   win33.Show;
188   nKeypressed(3000);
189   While Keypressed Do Readkey;
190   win22^.Hide;
191   win33.Active;
192   Write('Hiding window 2');
193   nKeypressed(2000);
194   While Keypressed Do Readkey;
195   win33.SetColor(47);
196   nKeypressed(2000);
197   While Keypressed Do Readkey;
198   x := 30;
199   y := 15;
200   win33.ClrScr;
201   for i := 1 to 11 do Begin
202      TextAttr := win33.GetColor;
203      dec(x);
204      dec(y);
205      str(i:0,s);
206      win33.Move(x,y);
207      Writeln('Moved by '+s);
208      nFWrite(stdscr,1,nStdScr.Rows,63,80,'Moved by '+s);
209      Delay(250);
210   End;
211   win33.Align(center,none);
212   win33.PutHeader('Left Header',14,left);
213   win33.Show;
214   Delay(1000);
215   win33.PutHeader('Right Header',14,right);
216   win33.Show;
217   Delay(1000);
218   win33.PutHeader('Center Header',15,center);
219   win33.Show;
220   Delay(2000);
221   Dispose(win11,Done);
222   Dispose(win22,Done);
223   win33.Done;
224   msgbox.Done;
225   NormVideo;
226   ClrScr;
227End.
228