home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / mos / exemples / txt_src / menus.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-18  |  10KB  |  248 lines

  1. {╔══════════════════════════════════════════════════════════════════════════╗
  2.  ║                PROGRAMME CREATION D'UNE FENETRE DE BASE                  ║
  3.  ╠══════════════════════════════════════════════════════════════════════════╣
  4.  ║ Commencé le 14.12.93, Terminé le 15.12.93.                               ║
  5.  ║ Programmé à l'IUT de Montpellier sur Turbo Pascal V6.00                  ║
  6.  ║ Auteur: Cheveau Frédéric alias Zuul alias BouFFtou.                      ║
  7.  ╚══════════════════════════════════════════════════════════════════════════╝}
  8.  
  9. Program Make_Base_Window;
  10.  
  11. Uses ZUUL_MEN,
  12.      ZUUL_COL,
  13.      ZUUL_TOO,
  14.      ZUUL_SWA,
  15.      ZUUL_MSE,
  16.      ZUUL_TXT,
  17.      ZUUL_DIR,
  18.      ZUUL_REQ,
  19.      Crt;
  20.  
  21. Var  Qtt_Men       :Integer;                    {*Nombre de Menus*}
  22.      DirSel,FilSel :String;                     {*Directory et Nom Fichier*}
  23.      X0,Y0         :Word;                       {*Save Pos Curseur for Resto*}
  24.      Si            :Longint;                    {*Size du Fihcier Chargé*}
  25.  
  26. {$M $9000,0,0}                                  {*Stack 9000 for Tools*}
  27.  
  28. {╔══════════════════════════════════════════════════════════════════════════╗
  29.  ║                        INITIALISATION DES MENUS                          ║
  30.  ╚══════════════════════════════════════════════════════════════════════════╝}
  31.  
  32. Procedure MENU_INIT;
  33. Begin
  34. Qtt_Men:=9;                               {*Nombre de Menus*}
  35.  
  36. TbMen[1,1]:='Main';                       {*Barre des Menus*}
  37. TbMen[2,1]:='List';
  38. TbMen[3,1]:='Prefs';
  39. TbMen[4,1]:='Boots';
  40. TbMen[5,1]:='Files';
  41. TbMen[6,1]:='Memory';
  42. TbMen[7,1]:='Scan';
  43. TbMen[8,1]:='Help';
  44. TbMen[9,1]:='Register';
  45.  
  46. TbMen[1,2]:='About';                       {*Labels Menu "Main"*}
  47. TbMen[1,3]:='Info';
  48. TbMen[1,4]:='Refresh Window';
  49.  
  50.  
  51.  
  52. TbMen[1,5]:='Stay Resident';
  53. TbMen[1,6]:='Exit';
  54.  
  55. TbMen[2,2]:='Performances';                {*Labels Menu "List"*}
  56. TbMen[2,3]:='Bootblocks';
  57. TbMen[2,4]:='Bootvirus';
  58. TbMen[2,5]:='Filesvirus';
  59. TbMen[2,6]:='Residents';
  60.  
  61. TbMen[3,2]:='Load Config';                      {*Labels Menu "Prefs"*}
  62. TbMen[3,3]:='Save Config';
  63. TbMen[3,4]:='Select Colors';
  64. TbMen[3,5]:='*';
  65. TbMen[3,6]:='X Show ASCII';
  66. TbMen[3,7]:='X Auto Save Config';
  67. TbMen[3,8]:='X Show Requesters';
  68. TbMen[3,9]:='X Skip Bootloader';
  69. TbMen[3,10]:='X Play Samples';
  70. TbMen[3,11]:='X Speed Display';
  71.  
  72. TbMen[4,2]:='Install DOS Boot';                 {*Labels Menu "Boots"*}
  73. TbMen[4,3]:='Install Cleared Boot';
  74. TbMen[4,4]:='Install Unistalled Boot';
  75. TbMen[4,5]:='';
  76.  
  77. TbMen[5,2]:='Check Files';                       {*Labels Menu "Files"*}
  78. TbMen[5,3]:='*';
  79. TbMen[5,4]:='X Subdirectory';
  80. TbMen[5,5]:='X All Files';
  81. TbMen[5,6]:='X All Attributes';
  82. TbMen[5,6]:='X Del Infected Files';
  83. TbMen[5,7]:='X Ren Infected Files';
  84. TbMen[5,8]:='X No Requesters';
  85. TbMen[6,2]:='Scan Mem';                          {*Labels Menu "Memory"*}
  86. TbMen[6,3]:='Clear Mem';
  87. TbMen[6,4]:='Reset';
  88.  
  89. TbMen[7,2]:='Scan All Entries';                  {*Labels Menu "Sacn"*}
  90.  
  91. TbMen[8,2]:='Info Help';                         {*Labels Menu "Help"*}
  92. TbMen[8,3]:='  Help';
  93.  
  94. TbMen[9,2]:='How to be...';                      {*Labels Menu "Register"*}
  95. TbMen[9,3]:='Registered Guys';
  96.  
  97. TbHlp[9,2]:='Test de Menu Help';
  98. End;
  99.  
  100. {╔══════════════════════════════════════════════════════════════════════════╗
  101.  ║                     CREATION DE LA FENETRE DE BASE                       ║
  102.  ╠══════════════════════════════════════════════════════════════════════════╣
  103.  ║ IN: / OUT: /  MODIFIABLE SELON BESOINS.                                  ║
  104.  ╚══════════════════════════════════════════════════════════════════════════╝}
  105.  
  106. Procedure MAKE_WINDOW;
  107. Var       A:Integer;
  108. Begin
  109. BGC(15); Clrscr;                                {*Aff Trame Ecran*}
  110. TC(1); Gotoxy(1,2);
  111. Box(1,2,80,24,False,False,True);
  112.  
  113. Gotoxy(2,25);                                   {*Aff Ligne du Bas*}
  114. TC(6); Write('T'); TC(0); Write('he ');
  115. TC(6); Write('V'); TC(0); Write('irus ');
  116. TC(6); Write('B'); TC(0); Write('oot ');
  117. TC(6); Write('D'); TC(0); Write('etector v2.5 ');
  118. TC(6); Write('(C)'); TC(0); Write(' 1993 ');
  119. TC(6); Write('F'); TC(0); Write('.Cheveau - ');
  120. TC(6); Write('T'); TC(0); Write('el: 68.50.77.15 - ');
  121. TC(6); Write('S'); TC(0); Write('HAREWARE');
  122. End;
  123.  
  124. {╔══════════════════════════════════════════════════════════════════════════╗
  125.  ║                                 ABOUT                                    ║
  126.  ╚══════════════════════════════════════════════════════════════════════════╝}
  127.  
  128. Procedure ABOUT;
  129. Var       SveX:SaveWin;
  130. Begin
  131. SwapHide(18,4,64,17,SveX);
  132. BGC(7); TC(15); Box(18,4,62,16,True,True,False);
  133. BOX(19,5,61,7,False,False,True);
  134. TC(0); Gotoxy(25,6); Write(' The Virus Boot Detector V2.5 ');
  135. TC(14); Gotoxy(20,9); Write('C'); TC(0); Write('ode by F.Cheveau.');
  136. TC(14); Gotoxy(20,10); Write('V'); TC(0); Write('ersion 2.5 - Release Date 06.11.93');
  137. TC(14); Gotoxy(20,11); Write('S'); TC(0); Write('hareware Version 8$ US (40 FF)');
  138. TC(14); Gotoxy(20,13); Write('C'); TC(0); Write('ontact me at:');
  139. Gotoxy(20,14); Write('Cheveau Frédéric, 8 Passage des Grillons');
  140. Gotoxy(20,15); Write('66000 Perpignan - Tel: 68.50.77.15');
  141. Wait; SwapShow(18,4,SveX);
  142. End;
  143.  
  144. {╔══════════════════════════════════════════════════════════════════════════╗
  145.  ║                                 INFO                                     ║
  146.  ╚══════════════════════════════════════════════════════════════════════════╝}
  147.  
  148. Procedure INFO;
  149. Var       SveX,SveY,SveZ:SaveWin;
  150. Begin
  151. BGC(1); TC(15);
  152. SwapHide(2,3,79,13,SveX);
  153. Box(2,3,77,12,True,True,False);
  154. Gotoxy(31,3); Write(' Selector Window '); Wait;
  155. SwapHide(15,6,36,20,SveY);
  156. BGC(7); Box(15,6,34,19,True,True,False);
  157. Gotoxy(21,6); Write(' Coding '); Wait;
  158. SwapHide(30,9,58,25,SveZ);
  159. BGC(3); Box(30,9,56,24,True,True,False);
  160. Gotoxy(36,9); Write(' Output Window '); Wait;
  161. SwapShow(30,9,SveZ); Wait;
  162. SwapShow(15,6,SveY); Wait;
  163. SwapShow(2,3,SveX);
  164. End;
  165.  
  166. {╔══════════════════════════════════════════════════════════════════════════╗
  167.  ║                  RAFRAICHIT L'ECRAN ET REINITIALISE                      ║
  168.  ╚══════════════════════════════════════════════════════════════════════════╝}
  169.  
  170. Procedure FRESH_WIND;
  171. Begin
  172. MAKE_WINDOW;                            {*Affiche la Fenetre principale*}
  173. MENU_INIT;                              {*Definit les Labels des Menus*}
  174. MENU_BAR_DISP(TbMen);                   {*Affiche Barre de Menu*}
  175. End;
  176.  
  177. {╔══════════════════════════════════════════════════════════════════════════╗
  178.  ║                      SORTIE DEFINITIVE DU PROGRAMME                      ║
  179.  ╚══════════════════════════════════════════════════════════════════════════╝}
  180.  
  181. Procedure SORTIE;
  182. Begin
  183. CopyPage(3,0);                          {*Restitue écran de Début*}
  184. CursOn;
  185. Gotoxy(X0,Y0);                          {*Restore Pos de Base du Curseur*}
  186. Halt(0);
  187. End;
  188.  
  189. {╔══════════════════════════════════════════════════════════════════════════╗
  190.  ║                   BOUCLE PRINCIPALE DE TEST DES TOUCHES                  ║
  191.  ╠══════════════════════════════════════════════════════════════════════════╣
  192.  ║ IN: / OUT: /  MODIFIABLE SELON BESOINS.                                  ║
  193.  ╚══════════════════════════════════════════════════════════════════════════╝}
  194.  
  195. Procedure TESTG;
  196. Var Ent:Char;
  197.     V:Integer;                                  {* = Ord(Ent)) *}
  198.     MS,IS,M0,I0   :Integer;                     {*Menu et Item Selectionné*}
  199.  
  200. Begin
  201. MS:=1; IS:=1;                                   {*1er Menu Sélectionné*}
  202. MENU_BAR_DISP(TbMen);                           {*Affiche Barre de Menu*}
  203. TC(15); Gotoxy(1,25);                           {*Hide Cursor*}
  204.  
  205. Repeat
  206. Ent:=Readkey;
  207. If Ord(Ent)=27 Then SORTIE;                     {*Sortie Définitive du Prog*}
  208. If Ord(Ent)=0 Then Begin
  209.    Ent:=Readkey;
  210.    V:=Ord(Ent);
  211.    M0:=MS; I0:=IS;                              {*Save Old Positions*}
  212.    If V=68 Then GIVEMENU(True,True,True,MS,IS);
  213.    End;
  214.  
  215. {********* Analyse le Résultat du Menu ! *********}
  216.  
  217. If (MS=0) And (IS=0) Then Else Begin
  218. If MS=1 Then Begin
  219.    If IS=1 Then ABOUT;                          {*About*}
  220.    If IS=2 Then INFO;                           {*Info*}
  221.    If IS=3 Then FRESH_WIND;                     {*ReFresh Window*}
  222.    If IS=5 Then SORTIE;                         {*Sortie Définitive du Prog*}
  223.    End;
  224. If MS=3 Then Begin
  225.    If IS=1 Then Givedir(10,3,Si,DirSel,FilSel); {*Loading Config*}
  226.    End;
  227. End;
  228.  
  229. If (MS=0) And (IS=0) Then                       {*Restore Good Positions*}
  230.    Begin MS:=M0; IS:=I0; End;
  231. TC(15); Gotoxy(1,25);
  232. Until False;                                    {*Hide Cursor*}
  233. End;
  234.  
  235. {╔══════════════════════════════════════════════════════════════════════════╗
  236.  ║                           PROGRAMME PRINCIPAL                            ║
  237.  ╠══════════════════════════════════════════════════════════════════════════╣
  238.  ║ IN: / OUT: /  MODIFIABLE SELON BESOINS.                                  ║
  239.  ╚══════════════════════════════════════════════════════════════════════════╝}
  240.  
  241. Begin
  242. X0:=WhereX; Y0:=WhereY;
  243. CopyPage(0,3);                          {*Capture l'écran --> Restitution*}
  244. CursOff;                                {*Cache le Curseur*}
  245. MAKE_WINDOW;                            {*Affiche la Fenetre principale*}
  246. MENU_INIT;                              {*Definit les Labels des Menus*}
  247. TESTG;                                  {*Teste les Touches et Menus*}
  248. End.