home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 06 / ami072a.txt < prev    next >
Text File  |  1997-04-07  |  5KB  |  296 lines

  1. <l>
  2. Program gt_demo;
  3.  
  4.  
  5.  
  6. {$incl 'libraries/gadtools.h' }
  7.  
  8. {$incl 'utility/tagitem.h' }
  9.  
  10. {$incl 'intuition/gadgetclass.h' }
  11.  
  12. {$incl 'graphics/text.h' }
  13.  
  14.  
  15.  
  16. Type
  17.  
  18.  TagList=array[0..31] of tagitem;
  19.  
  20.  
  21.  
  22. Var
  23.  
  24.  NW:NewWindow;
  25.  
  26.  PrgWindow:^Window
  27.  
  28.  ActiveGadget,GList,OKGadget,CancelGadget,DisabledGadget:p_Gadget
  29.  
  30.  VI:Ptr;
  31.  
  32.  WBScreen:p_Screen;
  33.  
  34.  OKNewGadget,CancelNewGadget,DisabledNewGadget:NewGadget;
  35.  
  36.  Msg:^IntuiMessage;
  37.  
  38.  Leave:Boolean;
  39.  
  40.  Class:Long;
  41.  
  42.  IAddress:Ptr;
  43.  
  44.  OKTagList,DisabledTagList:TagList;
  45.  
  46.  PrgFont:TextAttr;
  47.  
  48. Begin
  49.  
  50.  
  51.  
  52. OpenLib (GTBase,'gadtools.library',0);
  53.  
  54. OpenLib (IntBase,'intuition.library',0);
  55.  
  56.  
  57.  
  58. WBScreen:=OpenWorkBench;
  59.  
  60. VI:=GetVisualInfo(WBScreen,Nil);
  61.  
  62.  
  63.  
  64. GList:=Nil;
  65.  
  66. if CreateContext(^GList)=NIL then
  67.  
  68.  writeln ('Coô nie poszîo tak jak trzeba. Prawdopodobnie za maîo pamiëci.');
  69.  
  70.  
  71.  
  72. OKTagList[0]:=tagitem(GT_Underscore,ord('_'));
  73.  
  74. OKTagList[1]:=tagitem(TAG_END,0);
  75.  
  76.  
  77.  
  78. DisabledTagList[0]:=tagitem(GA_Disabled,1);
  79.  
  80. DisabledTagList[1]:=tagitem(TAG_END,0);
  81.  
  82.  
  83.  
  84. PrgFont:=TextAttr('topaz.font',8,FS_NORMAL,0);
  85.  
  86.  
  87.  
  88. With OKNewGadget do begin
  89.  
  90.  gng_LeftEdge:=10;
  91.  
  92.  gng_TopEdge:=20;
  93.  
  94.  gng_Width:=60;
  95.  
  96.  gng_Height:=12;
  97.  
  98.  gng_GadgetText:=' _OK ';
  99.  
  100.  gng_TextAttr:=^PrgFont;
  101.  
  102.  gng_GadgetID:=1; { Gadget ma numer 1. }
  103.  
  104.  gng_Flags:=0;
  105.  
  106.  gng_VisualInfo:=VI; { Tutaj wîaônie jest potrzebne VisualInfo }
  107.  
  108.  gng_UserData:=Nil; { Wystarczy GadgetID }
  109.  
  110. End;
  111.  
  112.  
  113.  
  114. OKGadget:=CreateGadget(BUTTON_KIND,GList,^OKNewGadget,^OKTagList);
  115.  
  116. { Typ Button, Poprzedni gadget - Glist, NewGadget - ustawiona wczeôniej,
  117.  
  118.   TagList - nie ma }
  119.  
  120.  
  121.  
  122. CancelNewGadget:=NewGadget(100,20,60,12,'Cancel',^PrgFont,2,0,VI,Nil);
  123.  
  124. { To samo co przy OKNewGadget tylko krócej }
  125.  
  126. CancelGadget:=CreateGadget(BUTTON_KIND,OKGadget,^CancelNewGadget,Nil);
  127.  
  128.  
  129.  
  130. DisabledNewGadget:=NewGadget(30,40,100,12,'Wyîâczony',^PrgFont,0,0,VI,Nil);
  131.  
  132. DisabledGadget:=CreateGadget(BUTTON_KIND,CancelGadget,^DisabledNewGadget,^DisabledTagList);
  133.  
  134.  
  135.  
  136. if GList=Nil then Writeln ('Nie poszîo.')
  137.  
  138.    Else Begin
  139.  
  140.  
  141.  
  142.  NW:=NewWindow(120,100,300,100,
  143.  
  144.                 255,255, { Standardowe kolory }
  145.  
  146.                 _CLOSEWINDOW or GadgetUP or BUTTONIDCMP { Program bëdzie otrzymywaî }
  147.  
  148.                 {  informacje o naciôniëciu gadget'a zamkniëcia okna oraz }
  149.  
  150.                 {  o naciôniëciu (wîaôciwie puszczeniu) gadgetów }
  151.  
  152.                 ,WindowDrag or WindowClose or Smart_Refresh or WindowDepth or NoCareRefresh,
  153.  
  154.                 GList { Tutaj dajemy nasz îaïcuch gadgetów }
  155.  
  156.                 ,Nil,
  157.  
  158.                 'Test',
  159.  
  160.                 Nil,
  161.  
  162.                 Nil,
  163.  
  164.                 0,0,0,0,
  165.  
  166.                 WBenchScreen);
  167.  
  168.  
  169.  
  170.  PrgWindow:=OpenWindow(^NW);
  171.  
  172.  
  173.  
  174.  If PrgWindow=Nil then writeln ('Nie mogë otworzyê okna!')
  175.  
  176.   else begin
  177.  
  178.  
  179.  
  180.     GT_RefreshWindow (PrgWindow,Nil);
  181.  
  182.     { Ta instrukcja pokazuje gadgety gadtools }
  183.  
  184.     { Spróbuj usunâê tâ instrukcjë przy nastëpnym uruchomieniu programu }
  185.  
  186.     { I trochë poklikaê w obszarze okna }
  187.  
  188.  
  189.  
  190.     Leave:=False;
  191.  
  192.  
  193.  
  194.     Repeat
  195.  
  196.         MSG:=Wait_Port(PrgWindow^.UserPort); { Czekamy na wiadomoôê od naszego okna }
  197.  
  198.         if MSG<>NIL then Begin { Nadeszîa }
  199.  
  200.             MSG:=GT_GetIMsg(PrgWindow^.UserPort); { Wiëc jâ odbieramy }
  201.  
  202.             { Jeûeli uûywasz gadtools.library zamiast GET_Msg oraz Reply_Msg }
  203.  
  204.             { Musisz korzystaê z GT_GetIMsg i GT_ReplyIMsg }
  205.  
  206.             Class:=MSG^.Class;
  207.  
  208.             IAddress:=MSG^.IAddress;
  209.  
  210.             { Zgodnie z zaleceniem Duddie'go tylko przepisujemy interesujâce nas }
  211.  
  212.             { pola, interpretowaê bëdziemy póúniej }
  213.  
  214.             GT_ReplyIMsg(Msg); { Juû odczytaliômy, port wolny }
  215.  
  216.             { Teraz interpretacja }
  217.  
  218.             { Pole Class zawiera informacje która flaga IDCMP (ustawiona w NewWindow) }
  219.  
  220.             { spowodowaîa wysîanie message'a }
  221.  
  222.             Case Class of
  223.  
  224.                 _CLOSEWINDOW: Leave:=True; { Uûytkownik nacisnâî gadget zamkniëcia okna }
  225.  
  226.                 GadgetUP: Begin { Uûytkownik nacisnâî jakiô gadget }
  227.  
  228.                     ActiveGadget:=IAddress; { Juû mamy wskaúnik do gadgeta który naciôniëto }
  229.  
  230.                     Case ActiveGadget^.GadgetID of { Teraz tylko sprawdziê pole ID }
  231.  
  232.                         1: Writeln ('Nacisneîeô gadget OK! ');
  233.  
  234.                         2: Begin
  235.  
  236.                             Writeln ('Nacisnâîeô gadget Cancel');
  237.  
  238.                         End;
  239.  
  240.                         { I inne wartoôci wpisane w gng_GadgetID }
  241.  
  242.                     Otherwise; { Na wszelki wypadek }
  243.  
  244.                     End;
  245.  
  246.                 End;
  247.  
  248.                 Otherwise; { To juû konieczne w z innymi gadgetami - }
  249.  
  250.     { ustawionych jest wiëcej flag IDCMP, których nie potrzebujemy }
  251.  
  252.             End;
  253.  
  254.         End;
  255.  
  256.     Until Leave { Czekamy , aû Leave=TRUE ( zmienna Leave jest ustawiana przy }
  257.  
  258.     { zamkniëciu okna, spróbuj wpisaê Leave:=True przy reakcji na }
  259.  
  260.     { gadget Cancel  np. po Writeln ('Nacisnâîeô gadget Cancel');  }
  261.  
  262.  
  263.  
  264.     CloseWindow (PrgWindow); { Zamkniëcie okna }
  265.  
  266.  
  267.  
  268.  End;
  269.  
  270.  
  271.  
  272.  FreeGadgets (GList); { Zwolniê pamiëê zajmowanâ przez gadgety }
  273.  
  274.  
  275.  
  276. End;
  277.  
  278.  
  279.  
  280. FreeVisualInfo(VI); { Zwolniê pamiëê zajmowanâ przez VisualInfo }
  281.  
  282.  
  283.  
  284. CloseLib (IntBase);
  285.  
  286. CloseLib (GTBase);
  287.  
  288.  
  289.  
  290. { I zamknâê biblioteki }
  291.  
  292.  
  293.  
  294. End.
  295.  
  296.