home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / Pascal / ANSIDRVR.ZIP / DEMOCON.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-03  |  3.4 KB  |  197 lines

  1. {
  2. Turbo Pascal ANSI Drivers
  3. Version 1.12
  4. Copyright (c) 1990 by Not So Serious Software
  5.  
  6. Original concept by Ian Silver
  7. Design and implementation by Kevin Dean
  8.  
  9. Kevin Dean
  10. Fairview Mall P.O. Box 55074
  11. 1800 Sheppard Avenue East
  12. Willowdale, Ontario
  13. CANADA    M2J 5B9
  14. CompuServe ID: 76336,3114
  15. }
  16.  
  17.  
  18. { This program demonstrates simple text I/O using the ANSICON console unit }
  19. program DemoANSICON;
  20.  
  21.  
  22. uses
  23.   ANSI, ANSICON;
  24.  
  25.  
  26. var
  27.   Name : string[20];
  28.   BoxColor, DataColor, BkgndColor : byte;
  29.  
  30.  
  31. {***}
  32. procedure UpdateCursorPos;
  33.  
  34. var
  35.   CurX, CurY, OldAttr : byte;
  36.  
  37. begin
  38. CurX := WhereX;
  39. CurY := WhereY;
  40. OldAttr := TextAttr;
  41.  
  42. TextAttr := DataColor;
  43. GotoXY(50, 13);
  44. Write('(', CurX : 2, ',', CurY : 2, ')');
  45.  
  46. TextAttr := OldAttr;
  47. GotoXY(CurX, CurY)
  48. end;
  49.  
  50.  
  51. {***}
  52. procedure DrawBox;
  53.  
  54. var
  55.   I : byte;
  56.  
  57. begin
  58. TextAttr := BoxColor;
  59.  
  60. GotoXY(23, 9);
  61. UpdateCursorPos;
  62. Write('╔');
  63.  
  64. for I := 24 to 57 do
  65.   begin
  66.   UpdateCursorPos;
  67.   Write('═')
  68.   end;
  69.  
  70. UpdateCursorPos;
  71. Write('╗');
  72.  
  73. for I := 10 to 15 do
  74.   begin
  75.   GotoXY(58, I);
  76.   UpdateCursorPos;
  77.   Write('║')
  78.   end;
  79.  
  80. GotoXY(58, 16);
  81. UpdateCursorPos;
  82. Write('╝');
  83.  
  84. for I := 57 downto 24 do
  85.   begin
  86.   GotoXY(I, 16);
  87.   UpdateCursorPos;
  88.   Write('═')
  89.   end;
  90.  
  91. GotoXY(23, 16);
  92. UpdateCursorPos;
  93. Write('╚');
  94.  
  95. for I := 15 downto 10 do
  96.   begin
  97.   GotoXY(23, I);
  98.   UpdateCursorPos;
  99.   Write('║')
  100.   end
  101. end;
  102.  
  103.  
  104. {***}
  105. procedure RunDemo;
  106.  
  107. begin
  108. Randomize;
  109.  
  110. repeat
  111.   BoxColor := Random(256);
  112.  
  113.   DrawBox;
  114.  
  115.   DataColor := Random(256);
  116.   BkgndColor := Random(256);
  117.  
  118.   TextAttr := BkgndColor;
  119.   GotoXY(24, 10);
  120.   UpdateCursorPos;
  121.   Write(' Your name:                       ');
  122.   UpdateCursorPos;
  123.  
  124.   TextAttr := DataColor;
  125.   GotoXY(36, 10);
  126.   UpdateCursorPos;
  127.   Write(Name);
  128.   UpdateCursorPos;
  129.  
  130.   TextAttr := BkgndColor;
  131.   GotoXY(24, 11);
  132.   UpdateCursorPos;
  133.   Write(' Box color:       Data color:     ');
  134.   UpdateCursorPos;
  135.  
  136.   TextAttr := DataColor;
  137.   GotoXY(36, 11);
  138.   UpdateCursorPos;
  139.   Write(BoxColor : 3);
  140.   UpdateCursorPos;
  141.   GotoXY(54, 11);
  142.   UpdateCursorPos;
  143.   Write(DataColor : 3);
  144.   UpdateCursorPos;
  145.  
  146.   TextAttr := BkgndColor;
  147.   GotoXY(24, 12);
  148.   UpdateCursorPos;
  149.   Write(' Background color:                ');
  150.   UpdateCursorPos;
  151.  
  152.   TextAttr := DataColor;
  153.   GotoXY(43, 12);
  154.   UpdateCursorPos;
  155.   Write(BkgndColor : 3);
  156.   UpdateCursorPos;
  157.  
  158.   TextAttr := BkgndColor;
  159.   GotoXY(24, 13);
  160.   UpdateCursorPos;
  161.   Write(' Current cursor position:         ');
  162.   UpdateCursorPos;
  163.  
  164.   TextAttr := BkgndColor;
  165.   GotoXY(24, 14);
  166.   UpdateCursorPos;
  167.   Write('                                  ');
  168.   UpdateCursorPos;
  169.  
  170.   TextAttr := BkgndColor;
  171.   GotoXY(24, 15);
  172.   UpdateCursorPos;
  173.   Write(' Press any key to end demo.       ');
  174.   UpdateCursorPos;
  175.  
  176.   Delay(250)
  177. until KeyPressed
  178. end;
  179.  
  180.  
  181. {***}
  182. begin
  183. { It is very important to make an explicit call to either GotoXY or ClrScr at }
  184. { the start of your program.  If you do not do so, the internal cursor        }
  185. { position management will be unpredictable.                                  }
  186. ClrScr;
  187.  
  188. WriteLn('This program demonstrates simple I/O using the ANSI and ANSI console');
  189. WriteLn('units.  Among the features demonstrated are screen control, cursor');
  190. WriteLn('control, text attribute control, input and output, and the delay');
  191. WriteLn('counter.');
  192. WriteLn;
  193. Write('What is your name (maximum 20 characters)? ');
  194. ReadLn(Name);
  195.  
  196. RunDemo
  197. end.