ocrt_demo.pp 6.1 KB

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