ocrt_demo.pp 5.9 KB

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