home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / mos / exemples / gfx_src / flag_win.pas < prev    next >
Pascal/Delphi Source File  |  1994-09-11  |  10KB  |  290 lines

  1. {╔══════════════════════════════════════════════════════════════════════════╗
  2.  ║       EXEMPLE D'UTILISATION DES FONCTIONS DE L'INTERFACE GRAPHIQUE       ║
  3.  ╠══════════════════════════════════════════════════════════════════════════╣
  4.  ║                        GESTION DES BOUTONS RADIOS                        ║
  5.  ╠══════════════════════════════════════════════════════════════════════════╣
  6.  ║ Coded by Zuul as BouFFtou as Cheveau Frédéric.                           ║
  7.  ║ Programmé à l'IUT de Montpellier sur Turbo Pascal V7.00.                 ║
  8.  ║ Contact us on 36.14 RTEL1 - Bal "BouFFtou" or Bal "ICF".                 ║
  9.  ╚══════════════════════════════════════════════════════════════════════════╝}
  10.  
  11. {$M 64000,0,365520}                      {*Stack And Heap*}
  12.  
  13. Program FLAG_WIN;                        {*Nom du Programme*}
  14.  
  15. Uses Graph,
  16.      ZUUL_MSE,                           {*Gestion de la Souris*}
  17.      ZUUL_BAS,                           {*Gestion des Variables*}
  18.      ZUUL_TXT,                           {*Gestion du Texte*}
  19.      ZUUL_ASM,                           {*Gestion de l'ASM*}
  20.      ZUUL_COL,                           {*Gestion des Couleurs*}
  21.      ZUUL_TOO,                           {*Gestion des Tools et Box*}
  22.      ZUUL_GAD,
  23.      ZUUL_WIN;
  24.  
  25. {╔══════════════════════════════════════════════════════════════════════════╗
  26.  ║                         PROCEDURE PRINCIPALE                             ║
  27.  ╚══════════════════════════════════════════════════════════════════════════╝}
  28.  
  29. Procedure MAIN;
  30. Var But1                     :ButG;           {*Type pour Gadgets Prédéfinit*}
  31.     Rad1,Rad2,Rad3,Rad4      :Rad;            {*Type pour Boutons Radios*}
  32.     Rad5,Rad6,Rad7,Rad8      :Rad;            {*Type pour Boutons Radios*}
  33.     Rad9,RadA,RadB,RadC      :Rad;            {*Type pour Boutons Radios*}
  34.     RadD,RadE,RadF,RadG      :Rad;            {*Type pour Boutons Radios*}
  35.     RadH,RadI                :Rad;            {*Type pour Boutons Radios*}
  36.  
  37.     W0,W                     :Win;            {*Structure Window*}
  38.     ExitFlg                  :Boolean;        {*Flag Sortie Programme*}
  39.     ES,ES1,ES2               :String;         {*String Tout Usages*}
  40.     Declick,OneTime          :Boolean;        {*Bouton Souris Appuyé ou pas*}
  41.     IDCMP                    :Word;           {*IDCMP Fenêtre*}
  42.     IDRES                    :Word;           {*IDRES Fenêtre*}
  43.     NUM                      :Word;           {*Numéro Gadets Cliqué*}
  44.     Even                     :Byte;           {*Evenements pour Fenêtres*}
  45.  
  46. {*************************** PROCEDURES INTERNE *****************************}
  47.  
  48. Procedure DISP_IDCMP;
  49. Begin
  50. ES:=WORD_TO_STRING(W.IDCMP);
  51. SetColor(Col0);
  52. DispG(130,334,Col7,'$'+ES);
  53. End;
  54.  
  55. Procedure CALC_IDCMP;
  56. Begin
  57. If OneTime=False Then
  58.    Begin
  59.    If IDCMP And NUM=NUM
  60.       Then IDCMP:=IDCMP And ($FFFF-NUM)
  61.       Else IDCMP:=IDCMP Or NUM;
  62.     IDCMP_WINDOW(IDCMP,W);
  63.  
  64.    DISP_IDCMP;
  65.    CLEAR_WINDOW(W);
  66.    OneTime:=True;
  67.    End;
  68. End;
  69.  
  70. Procedure DISP_IDRES;
  71. Begin
  72. ES:=WORD_TO_STRING(W.IDRES);
  73. SetColor(Col0);
  74. DispG(340,82,Col7,'$'+ES);
  75. End;
  76.  
  77. Procedure CALC_IDRES;
  78. Begin
  79. If OneTime=False Then
  80.    Begin
  81.    If IDRES And NUM=NUM
  82.       Then IDRES:=IDRES And ($FFFF-NUM)
  83.       Else IDRES:=IDRES Or NUM;
  84.     IDRES_WINDOW(IDRES,W);
  85.  
  86.    DISP_IDRES;
  87.    CLEAR_WINDOW(W);
  88.    OneTime:=True;
  89.    End;
  90. End;
  91.  
  92. {********************* INITIALISATION WINDOW DE BASE ************************}
  93.  
  94. Procedure INIT_WINDOW0;
  95. Begin
  96. INIT_WINDOW(0,0,GetMaxX,GetMaxY,$0021,'',W0);
  97. SUP_WINDOW(0,0,0,0,39,50,400,250,0,Col7,$0000,W0);
  98.  
  99. ButtonG(520,9,59,False,But1,'E_XIT');         {*Initialise les Boutons*}
  100.  
  101. Radio_Box(180,040,1,True,Rad1);               {*Initialise les Boutons Radio*}
  102. Radio_Box(180,058,1,True,Rad2);
  103. Radio_Box(180,076,1,True,Rad3);
  104. Radio_Box(180,094,1,True,Rad4);
  105. Radio_Box(180,112,1,True,Rad5);
  106. Radio_Box(180,130,1,False,Rad6);
  107. Radio_Box(180,148,1,False,Rad7);
  108. Radio_Box(180,166,1,True,Rad8);
  109. Radio_Box(180,184,1,True,Rad9);
  110. Radio_Box(180,202,1,True,RadA);
  111. Radio_Box(180,220,1,False,RadB);
  112. Radio_Box(180,238,1,False,RadC);
  113. Radio_Box(180,256,1,False,RadD);
  114. Radio_Box(180,274,1,False,RadE);
  115. Radio_Box(180,292,1,True,RadF);
  116. Radio_Box(180,310,1,False,RadG);
  117.  
  118. Radio_Box(390,040,1,True,RadH);
  119. Radio_Box(390,058,1,False,RadI);
  120.  
  121. Declick:=False; OneTime:=False;
  122. End;
  123.  
  124. {******************************* DRAW WINDOW0 *******************************}
  125.  
  126. Procedure REDRAW_WINDOW0;
  127. Var A,T,I                    :Integer;        {*Boucle & Aff*}
  128.     But2:ButG;
  129.  
  130. Begin
  131. HideMouse;
  132. Bevel(180,8,455,23,1,7,True,True);            {*Affiche la Boite*}
  133. DispG(220,10,7,'UTILISATION DES FLAGS D''UNE FENETRE');  {*Titre*}
  134. Bevel(10,35,210,330,1,7,True,False);          {*Affiche la Boite*}
  135. Bevel(220,35,420,78,1,7,True,False);          {*Affiche la Boite*}
  136. Draw_ButtonG(But1);
  137. ButtonG(30,333,150,False,But2,'FLAGS IDCMP =       ');
  138. ButtonG(240,81,150,False,But2,'FLAGS IDRES =       ');
  139.  
  140. T:=1; I:=0;                                   {*Affichage IDCMP Numéros*}
  141. ES2:='0000';
  142. For A:=1 to 16 do Begin
  143.    ES:='$0000';
  144.    Str(T,ES1);
  145.    ES:=Copy(ES,1,5-I-Length(ES1))+ES1+Copy(ES2,1,I);
  146.    DispG(140,A*18+22,Col7,ES);
  147.    T:=T*2;
  148.    If T>8 Then Begin T:=1; I:=I+1; End;
  149. End;
  150.  
  151. T:=1; I:=0;                                   {*Affichage IDRES Numéros*}
  152. ES2:='0000';
  153. For A:=1 to 2 do Begin
  154.    ES:='$0000';
  155.    Str(T,ES1);
  156.    ES:=Copy(ES,1,5-I-Length(ES1))+ES1+Copy(ES2,1,I);
  157.    DispG(350,A*18+22,Col7,ES);
  158.    T:=T*2;
  159.    If T>8 Then Begin T:=1; I:=I+1; End;
  160. End;
  161.  
  162. DispG(20,040,Col7,'WINDOW ACTIVATE');         {*Affiche le Texte*}
  163. DispG(20,058,Col7,'GADGET EXTEND');
  164. DispG(20,076,Col7,'GADGET SIZE');
  165. DispG(20,094,Col7,'GADGET SWAP');
  166. DispG(20,112,Col7,'GADGET CLOSE');
  167. DispG(20,130,Col7,'WINDOW BACKDROP');
  168. DispG(20,148,Col7,'LIMIT BLOCK');
  169. DispG(20,166,Col7,'SHOW TITLE');
  170. DispG(20,184,Col7,'SHOW BORDER');
  171. DispG(20,202,Col7,'INCLUDE CURSOR');
  172. DispG(20,220,Col7,'WINDOW LOCKED');
  173. DispG(20,238,Col7,'WINDOW MODE CON');
  174. DispG(20,256,Col7,'WINDOW REFRESH');
  175. DispG(20,274,Col7,'WINDOW BACKTRANS');
  176. DispG(20,292,Col7,'WINDOW MOVE');
  177. DispG(20,310,Col7,'RELIEF BORDERS');
  178. DispG(230,040,Col7,'ZOOM WINDOW');
  179. DispG(230,058,Col7,'WHOLE MOVE WINDOW');
  180.  
  181. Draw_Radio_Box(Rad1);
  182. Draw_Radio_Box(Rad2);
  183. Draw_Radio_Box(Rad3);
  184. Draw_Radio_Box(Rad4);
  185. Draw_Radio_Box(Rad5);
  186. Draw_Radio_Box(Rad6);
  187. Draw_Radio_Box(Rad7);
  188. Draw_Radio_Box(Rad8);
  189. Draw_Radio_Box(Rad9);
  190. Draw_Radio_Box(RadA);
  191. Draw_Radio_Box(RadB);
  192. Draw_Radio_Box(RadC);
  193. Draw_Radio_Box(RadD);
  194. Draw_Radio_Box(RadE);
  195. Draw_Radio_Box(RadF);
  196. Draw_Radio_Box(RadG);
  197. Draw_Radio_Box(RadH);
  198. Draw_Radio_Box(RadI);
  199.  
  200. SetColor(Col0);
  201. DISP_IDCMP;
  202. DISP_IDRES;
  203. ShowMouse;
  204. End;
  205.  
  206. {****************************** MAIN PROCEDURE ******************************}
  207.  
  208. Begin
  209. INIT_WINDOW0;                           {*Initialisation Window de Base*}
  210. REDRAW_WINDOW0;                         {*Affiche Fenêtre 0*}
  211.  
  212. INIT_WINDOW(250,130,600,230,$539F,'FENETRE DE TEST',W);
  213. SUP_WINDOW(0,0,GetMaxX,GetMaxY,39,50,GetMaxX,GetMaxY,0,Col5,$0001,W);
  214. DRAW_WINDOW(W);
  215.  
  216. IDCMP:=W.IDCMP;
  217. IDRES:=W.IDRES;
  218. DISP_IDCMP;
  219. DISP_IDRES;
  220.  
  221. ExitFlg:=False;                               {*Don't Forget !!!*}
  222. Repeat
  223. If GETMSG_BUT(But1,1)=True Then ExitFlg:=True;{*Sortie du Programme*}
  224.  
  225. If Rad1.Fl1=True Then Begin NUM:=$0001; CALC_IDCMP; End;
  226. If Rad2.Fl1=True Then Begin NUM:=$0002; CALC_IDCMP; End;
  227. If Rad3.Fl1=True Then Begin NUM:=$0004; CALC_IDCMP; End;
  228. If Rad4.Fl1=True Then Begin NUM:=$0008; CALC_IDCMP; End;
  229. If Rad5.Fl1=True Then Begin NUM:=$0010; CALC_IDCMP; End;
  230. If Rad6.Fl1=True Then Begin NUM:=$0020; CALC_IDCMP; End;
  231. If Rad7.Fl1=True Then Begin NUM:=$0040; CALC_IDCMP; End;
  232. If Rad8.Fl1=True Then Begin NUM:=$0080; CALC_IDCMP; End;
  233. If Rad9.Fl1=True Then Begin NUM:=$0100; CALC_IDCMP; End;
  234. If RadA.Fl1=True Then Begin NUM:=$0200; CALC_IDCMP; End;
  235. If RadB.Fl1=True Then Begin NUM:=$0400; CALC_IDCMP; End;
  236. If RadC.Fl1=True Then Begin NUM:=$0800; CALC_IDCMP; End;
  237. If RadD.Fl1=True Then Begin NUM:=$1000; CALC_IDCMP; End;
  238. If RadE.Fl1=True Then Begin NUM:=$2000; CALC_IDCMP; End;
  239. If RadF.Fl1=True Then Begin NUM:=$4000; CALC_IDCMP; End;
  240. If RadG.Fl1=True Then Begin NUM:=$8000; CALC_IDCMP; End;
  241. If RadH.Fl1=True Then Begin NUM:=$0001; CALC_IDRES; End;
  242. If RadI.Fl1=True Then Begin NUM:=$0002; CALC_IDRES; End;
  243.  
  244. If Click_Mouse(1)=False Then OneTime:=False;
  245.  
  246. GETMSG_RADIO(Rad1,1);                         {*Active et Teste Boutons*}
  247. GETMSG_RADIO(Rad2,1);
  248. GETMSG_RADIO(Rad3,1);                         {*Active et Teste Boutons*}
  249. GETMSG_RADIO(Rad4,1);
  250. GETMSG_RADIO(Rad5,1);
  251. GETMSG_RADIO(Rad6,1);
  252. GETMSG_RADIO(Rad7,1);
  253. GETMSG_RADIO(Rad8,1);
  254. GETMSG_RADIO(Rad9,1);
  255. GETMSG_RADIO(RadA,1);
  256. GETMSG_RADIO(RadB,1);
  257. GETMSG_RADIO(RadC,1);
  258. GETMSG_RADIO(RadD,1);
  259. GETMSG_RADIO(RadE,1);
  260. GETMSG_RADIO(RadF,1);
  261. GETMSG_RADIO(RadG,1);
  262. GETMSG_RADIO(RadH,1);
  263. GETMSG_RADIO(RadI,1);
  264.  
  265. Even:=ACTIVE_WINDOW(W0); If Even=8 Then REDRAW_WINDOW0;
  266.  
  267. Even:=ACTIVE_WINDOW(W);
  268.  
  269. Until ExitFlg=True;                           {*Sortie du Programme*}
  270.  
  271. If W.Destroyed=False Then KILL_WINDOW(W);
  272. If W0.Destroyed=False Then KILL_WINDOW(W0);
  273. End;
  274.  
  275. {╔══════════════════════════════════════════════════════════════════════════╗
  276.  ║                           PROGRAMME PRINCIPAL                            ║
  277.  ╚══════════════════════════════════════════════════════════════════════════╝}
  278.  
  279. Begin
  280. INIT_ASM;                               {*Initialise All for Asm*}
  281. INIT_SCREEN;                            {*Initialise All for Screen*}
  282. INIT_MOUSE;                             {*Initialise All for Mouse*}
  283.  
  284. MAIN;                                   {*Execute le Programme Principal*}
  285.  
  286. DONE_MOUSE;                             {*Restore All for Mouse*}
  287. DONE_SCREEN;                            {*Restore All for Screen*}
  288. DONE_ASM;                               {*Restore All for Asm*}
  289. End.
  290.