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