home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL3.DMS / in.adf / DEMOS-OS1.3 / SysProg / GadgetDemo.p < prev    next >
Encoding:
Text File  |  1994-07-28  |  8.5 KB  |  202 lines

  1. { MAXONPascal3-Anpassung / Test:  Falk Zühlsdorff (PackMAN) 1994 }
  2.  
  3. PROGRAM GadgetDemo;
  4. USES INTUITION;
  5.  
  6. TYPE
  7.   BorDatTyp = Array[1..10] of integer;  { Typ für Borderdata }
  8.   ImgDatTyp = Array[1..12] of Long;     { Typ für Imagedata }
  9. VAR
  10.   Win: ^Window;
  11.   Msg: ^IntuiMessage;
  12.   Gad1, Gad2, Gad3, Gad4, Gad5: Gadget;
  13.   Tex1, Tex2, Tex3, Tex4, Tex5: IntuiText;
  14.   Bor1, Bor2,             Bor5: Border;
  15.   BDt1, BDt2,             BDt5: BorDatTyp;
  16.   Img1, Img2, Img3, Img4      : Image;
  17.   IDt1, IDt2, IDt3, IDt4      : ^ImgDatTyp;
  18.   AktGad: ^Gadget;
  19.   Ende: Boolean;
  20.   AddG: Word;
  21.  
  22.  PROCEDURE Ausgabe(t: Str);
  23.    { gibt den Text "t" im Window aus }
  24.    VAR it: IntuiText;
  25.    BEGIN
  26.     it:=IntuiText(1,0,1,0,0,Nil,t,Nil);
  27.     PrintIText(Win^.RPort, ^it, 5, 12)
  28.    END;
  29.  
  30.  BEGIN
  31.    Win:=Open_Window(0, 0, 320, 120, 1, _CLOSEWINDOW+GADGETUP+GADGETDOWN,
  32.         WINDOWSIZING+WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
  33.         'GadgetDemo', Nil, 300, 100, 640, 256);
  34.    Gad1:=Gadget(Nil,            { erste Gadget-Struktur: }
  35.                 10,25,          { Position }
  36.                 80,12,          { Größe }
  37.                 GADGHCOMP,      { Gadget wird invertiert }
  38.                 TOGGLESELECT+GADGIMMEDIATE, { Activation Flags }
  39.                 BOOLGADGET,     { Typ }
  40.                 ^Bor1,          { Zeiger auf Borderstruktur }
  41.                 Nil,            { kein Select-Border }
  42.                 ^Tex1,          { Zeiger auf Text }
  43.                 0, Nil, 1, 0);{ Nummer 1 }
  44.    Tex1:=IntuiText(1, 0, 0, 16, 3, Nil, 'Toggle', Nil);
  45.    Bor1:=Border(0, 0, 3, 0, 0, 5, ^BDt1, Nil);
  46.    BDt1:=BorDatTyp(-3,-2, 83,-2, 83,14, -3,14, -3,-2);
  47.  
  48.    Gad2:=Gadget(Nil,             { zweite Gadget-Struktur: }
  49.                 10,48,           { Position }
  50.                 80,12,           { Größe }
  51.                 GADGHBOX,        { Gadget wird umrandet }
  52.                 RELVERIFY,       { Activation Flags }
  53.                 BOOLGADGET,      { Typ }
  54.                 ^Bor2,           { Zeiger auf Borderstruktur }
  55.                 Nil,             { kein Select-Border }
  56.                 ^Tex2,           { Zeiger auf Text }
  57.                 0, Nil, 2, 0); { Nummer 2 }
  58.    Tex2:=IntuiText(1, 0, 0, 8, 3, Nil, 'Nummer 2', Nil);
  59.    Bor2:=Border(0, 0, 1, 0, 0, 5, ^BDt2, Nil);
  60.    BDt2:=BorDatTyp(-3,-3, 83,-3, 83,14, -3,14, -3,-3);
  61.  
  62.    Gad3:=Gadget(Nil,           { dritte Gadget-Struktur: }
  63.                 200,25,        { Position }
  64.                 32,12,         { Größe }
  65.                 GADGHIMAGE+GADGIMAGE,    { Gadget hat Bild }
  66.                 RELVERIFY+TOGGLESELECT,  { Activation Flags }
  67.                 BOOLGADGET,      { Typ }
  68.                 ^Img1,           { Zeiger auf Imagestruktur }
  69.                 ^Img2,           { Select-Image }
  70.                 ^Tex3,           { Zeiger auf Text }
  71.                 0, Nil, 3, 0); { Nummer 3 }
  72.    Tex3:=IntuiText(1, 0, 0, -100, 3, Nil, 'Mit Bild:', Nil);
  73.    IDt1:=Ptr(Alloc_Mem(SizeOf(ImgDatTyp),2));
  74.    IDt1^:=ImgDatTyp(%00000000000000000000000111000000,
  75.                     %00000000000000000000111111111000,
  76.                     %00000000000000000111111111111111,
  77.                     %00000000000000000000001111100000,
  78.                     %00000000000000000000001111100000,
  79.                     %11111110000000000000001111100000,
  80.                     %11111111110000000000011111100000,
  81.                     %00000011111000000001111111000000,
  82.                     %00000001111111111111111100000000,
  83.                     %00000000011111111111100000000000,
  84.                     %00000000000000000000000000000000,
  85.                     %00000000000000000000000000000000);
  86.    IDt2:=Ptr(Alloc_Mem(SizeOf(ImgDatTyp),2));
  87.    IDt2^:=ImgDatTyp(%00000000000000000000000000000000,
  88.                     %00000000000000000000000000000000,
  89.                     %00000000011111111111100000000000,
  90.                     %00000001111111111111111100000000,
  91.                     %00000011111000000001111111000000,
  92.                     %11111111110000000000011111100000,
  93.                     %11111110000000000000001111100000,
  94.                     %00000000000000000000001111100000,
  95.                     %00000000000000000111111111111111,
  96.                     %00000000000000000000111111111000,
  97.                     %00000000000000000000001111100000,
  98.                     %00000000000000000000000111000000);
  99.    Img1:=Image(0,0,32,12,1,IDt1,1,3,Nil);
  100.    Img2:=Image(0,0,32,12,1,IDt2,1,3,Nil);
  101.  
  102.    Gad4:=Gadget(Nil,           { dritte Gadget-Struktur: }
  103.                 -40,20,        { Position }
  104.                 32,12,         { Größe }
  105.                 GADGHIMAGE+GADGIMAGE+GRELRIGHT,{ relativ zu rechtem Rand }
  106.                 RELVERIFY+TOGGLESELECT,  { Activation Flags }
  107.                 BOOLGADGET,      { Typ }
  108.                 ^Img4,           { Zeiger auf Image }
  109.                 ^Img3,           { Select-Image }
  110.                 ^Tex4,           { Zeiger auf Text }
  111.                 0, Nil, 4, 0); { Nummer 4 }
  112.    Tex4:=IntuiText(3, 0, 0, -4, 3, Nil, ' *4* ', Nil);
  113.    IDt3:=Ptr(Alloc_Mem(SizeOf(ImgDatTyp),2));
  114.    IDt3^:=ImgDatTyp(%11100000000000000000000000000111,
  115.                     %00111100000000000000000000111100,
  116.                     %00000111000000000000000111100000,
  117.                     %00000001111000000000011100000000,
  118.                     %00000000001110000011110000000000,
  119.                     %00000000000011111110000000000000,
  120.                     %00000000000001111110000000000000,
  121.                     %00000000000111000011110000000000,
  122.                     %00000000111100000000011100000000,
  123.                     %00000111100000000000000111100000,
  124.                     %00111100000000000000000000111100,
  125.                     %11100000000000000000000000000111);
  126.    Img3:=Image(0,0,32,12,0,IDt3,1,0,Nil);
  127.    IDt4:=Ptr(Alloc_Mem(SizeOf(ImgDatTyp),2));
  128.    IDt4^:=ImgDatTyp(%00000011111111111111111111000000,
  129.                     %00001111100000000000000111110000,
  130.                     %00111100000000000000000000111100,
  131.                     %01110000000000000000000000001110,
  132.                     %11100000000000000000000000000111,
  133.                     %11100000000000000000000000000111,
  134.                     %11100000000000000000000000000111,
  135.                     %11100000000000000000000000000111,
  136.                     %01110000000000000000000000001110,
  137.                     %00111100000000000000000000111100,
  138.                     %00001111100000000000000111110000,
  139.                     %00000011111111111111111110000000);
  140.    Img4:=Image(0,0,32,12,0,IDt4,1,0,Nil);
  141.  
  142.    Gad5:=Gadget(Nil,           { erste Gadget-Struktur: }
  143.                 250,80,        { Position }
  144.                 -272, -92,     { Größe }
  145.                 GADGHCOMP+GRELWIDTH+GRELHEIGHT,
  146.                 RIGHTBORDER+BOTTOMBORDER+RELVERIFY,
  147.                 BOOLGADGET,      { Typ }
  148.                 ^Bor5,           { Zeiger auf Borderstruktur }
  149.                 Nil,             { kein Select-Border }
  150.                 ^Tex5,           { Zeiger auf Text }
  151.                 0, Nil, 5, 0); { Nummer 5 }
  152.    Tex5:=IntuiText(1, 0, 0, 3, 3, Nil, 'Gadget#5', Nil);
  153.    Bor5:=Border(0, 0, 3, 0, 0, 5, ^BDt5, Nil);
  154.    BDt5:=BorDatTyp(-3,-2, 280,-2, 280,90, -3,90, -3,-2);
  155.  
  156.    AddG:=AddGadget(Win, ^Gad1, 0);
  157.    AddG:=AddGadget(Win, ^Gad2, 1);
  158.    AddG:=AddGadget(Win, ^Gad3, 2);
  159.    AddG:=AddGadget(Win, ^Gad4, 3);
  160.    AddG:=AddGadget(Win, ^Gad5, 4);
  161.  
  162.    RefreshGadgets(Win^.FirstGadget, Win, Nil);
  163.  
  164.    ENDe:=False;
  165.    REPEAT
  166.      Msg:=Wait_Port(Win^.UserPort);
  167.      Msg:=Get_Msg(Win^.UserPort);
  168.      Case Msg^.Class Of
  169.        _CLOSEWINDOW: ENDe:=True;
  170.        GADGETUP,GADGETDOWN:
  171.                 BEGIN
  172.                   AktGad:=Msg^.IAddress;
  173.                   Case AktGad^.GadgetID Of
  174.                    1: IF (Gad1.Flags and SELECTED)<>0 THEN
  175.                         Ausgabe('Gadget 1 an.       ')
  176.                       ELSE
  177.                         Ausgabe('Gadget 1 aus.      ');
  178.                    2: Ausgabe('Gadget 2 angewählt.');
  179.                    3: IF (Gad3.Flags and SELECTED)<>0 THEN
  180.                         Ausgabe('Pfeil nach unten   ')
  181.                       ELSE
  182.                         Ausgabe('Pfeil nach oben    ');
  183.                    4: IF (Gad4.Flags and SELECTED)=0 THEN
  184.                         Ausgabe('Eingekreist.       ')
  185.                       ELSE
  186.                         Ausgabe('Durchgestrichen.   ');
  187.                    5: Ausgabe('Unten rechts.       ');
  188.                   Otherwise;
  189.                   END  { inneres CASE }
  190.                 END;
  191.      Otherwise;
  192.      END; { of CASE }
  193.      Reply_Msg(Msg);
  194.    UNTIL Ende;
  195.  
  196.    Close_Window(Win);
  197.    CloseLib(IntuitionBase);
  198.    Free_Mem(Long(IDt1),SizeOf(ImgDatTyp));
  199.    Free_Mem(Long(IDt2),SizeOf(ImgDatTyp));
  200.    Free_Mem(Long(IDt3),SizeOf(ImgDatTyp));
  201.  END.
  202.