home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL3.DMS / in.adf / DEMOS-OS2.0 / ListView.p < prev    next >
Encoding:
Text File  |  1994-08-25  |  5.8 KB  |  181 lines

  1. { Programm:  ListView
  2.   ~~~~~~~~
  3.   Sinn:      arbeiten mit Listviewgadgets... diesmal mit "MinList"
  4.   ~~~~~
  5.   Sprache:   MaxonPASCAL 3 / KickPascal 2.12 & OS 2.0-Includes
  6.   ~~~~~~~~   
  7.  
  8.   Copyright: FREEWARE, bei Routinenverwendung wird der Autor
  9.   ~~~~~~~~~~           im Infofile / Dok erwähnt und erhält das fertige
  10.                        nichtkomerzielle Programm zugesendet.
  11.  
  12.   Autor:     PackMAN
  13.   ~~~~~~     c/o Falk Zühlsdorff
  14.              Lindenberg 66
  15.              D-98693 Ilmenau/Thüringen
  16.  
  17.   Kommentar: Version für MAXON
  18.   ~~~~~~~~~~ ab OS 2.0                                 }
  19.  
  20. Program LV;
  21.  
  22. USES INTUITION,GRAPHICS,GADTOOLS,EXECIO;
  23. TYPE Txtype            = array[0..19] OF string[35];
  24. VAR  Win               : p_Window;
  25.      NWTags            : array[1..14] of TagItem; STATIC;
  26.      RP                : p_RastPort;
  27.      PScr              : p_Screen;
  28.      drawinfo          : p_drawinfo;
  29.      txattr            : TextAttr; STATIC;
  30.      font              : p_textfont;
  31.      myfont            : long; STATIC;
  32.      vi                : PTR;
  33.      title             : string;STATIC;
  34.  
  35.      msg               : p_IntuiMessage;
  36.      ng                : NewGadget;STATIC;
  37.      G,PGad,Glist      : p_Gadget;
  38.      LVTags            : array[0..3] of TagItem;STATIC;
  39.  
  40.      ex                : boolean;STATIC;
  41.  
  42.      nodelist          : array[0..19] of p_node;
  43.  
  44.      i                 : byte;
  45.      mylist            : minlist;
  46.      Tx                : Txtype;STATIC;
  47.  
  48. BEGIN
  49.  PScr:=NIL;
  50.  PScr:=lockpubscreen(NIL);
  51.  IF PScr<>NIL
  52.   THEN
  53.    BEGIN
  54.     drawinfo:=getscreendrawinfo(PScr);
  55.     IF drawinfo<>NIL
  56.      THEN
  57.       BEGIN
  58.        font:=drawinfo^.dri_font;
  59.        vi:=GetVisualInfoA(PScr,nil);
  60.        Freescreendrawinfo(PScr,drawinfo);
  61.        UnlockPubScreen(NIL,PScr);
  62.        PGad:=NIL;
  63.        GList:=NIL;
  64.        PGad:=CreateContext(^GList);
  65.        IF PGad<>NIL
  66.         THEN
  67.          BEGIN
  68.           txattr:=TextAttr('topaz.font',8,0,0);         {simple for test}
  69.           Font:=OpenFont(^txattr);
  70.           Tx:=Txtype(' Bsp. für ein Listviewgadget in',
  71.                      ' MaxonPASCAL 3 / KickPASCAL 2.12',
  72.                      '',
  73.                      '    V0.27  mit "MinList"',
  74.                      '',
  75.                      '            © & P by',
  76.                      '',
  77.                      '            PackMAN',
  78.                      '       (Falk Zühlsdorff)',
  79.                      '',
  80.                      '       es geht auch mit ',
  81.                      '',
  82.                      '         ARRAY of LONG',
  83.                      '',
  84.                      '       Greetings fly to:',
  85.                      '',
  86.                      '      dopW, Janosh, Diesel',
  87.                      '      Rascal,Røgersøft...',
  88.                      '',
  89.                      '');
  90.           FOR i:=0 TO 19 DO
  91.            nodelist[i]:=AllocMem(sizeof(Node),MEMF_CLEAR);
  92.  
  93.            {ohne SpeicherAlloc Reise nach Indien}
  94.  
  95.           nodelist[0]^.ln_succ:=^nodelist[1]^.ln_succ;
  96.           nodelist[0]^.ln_pred:=^mylist.mlh_head;
  97.           nodelist[0]^.ln_type:=0;
  98.           nodelist[0]^.ln_pri:=0;
  99.           nodelist[0]^.ln_name:=^Tx[0];
  100.  
  101.           FOR i:=1 TO 18 DO
  102.            BEGIN
  103.             nodelist[i]^.ln_succ:=^nodelist[i+1]^.ln_succ;
  104.             nodelist[i]^.ln_pred:=^nodelist[i-1]^.ln_succ;
  105.             nodelist[i]^.ln_type:=0;
  106.             nodelist[i]^.ln_pri:=0;
  107.             nodelist[i]^.ln_name:=^Tx[i];
  108.            END;
  109.  
  110.           nodelist[19]^.ln_succ:=^mylist.mlh_tail;
  111.           nodelist[19]^.ln_pred:=^nodelist[18]^.ln_succ;
  112.           nodelist[19]^.ln_type:=0;
  113.           nodelist[19]^.ln_pri:=0;
  114.           nodelist[19]^.ln_name:=^Tx[19];
  115.  
  116.           mylist.mlh_head:=nodelist[0];
  117.           mylist.mlh_tail:=NIL;
  118.           mylist.mlh_tailpred:=nodelist[2];
  119.  
  120.           LVTags[0]:=TagItem(GTLV_Top,0);
  121.           LVTags[1]:=TagItem(GTLV_ReadOnly,ord(true));
  122.           LVTags[2]:=TagItem(GTLV_Labels,long(^mylist));{ <-- vergl. }
  123.           LVTags[3].ti_tag:=Tag_End;                    { V0.26      }
  124.  
  125.           ng:=NewGadget(60,32,280,50,NIL,^Txattr,0,0,vi,NIL);
  126.           g:=CreateGadgetA(LISTVIEW_KIND,pgad,^ng,^LVtags[0]);
  127.  
  128.           title:='ListView 0.27 © & P by PackMAN 03.07.94';
  129.           NWTags[1] :=TagItem(wa_left,0);
  130.           NWTags[2] :=TagItem(wa_top,0);
  131.           NWTags[3] :=TagItem(wa_width,400);
  132.           NWTags[4] :=TagItem(wa_height,100);
  133.           NWTags[5] :=TagItem(wa_activate,ord(true));
  134.           NWTags[6] :=TagItem(wa_smartrefresh,ord(true));
  135.           NWTags[7] :=TagItem(wa_rmbtrap,ord(true));
  136.           NWTags[8] :=TagItem(wa_title,long(^title));
  137.           NWTags[9] :=TagItem(wa_flags,WFLG_CLOSEGADGET);
  138.           NWTags[10]:=TagItem(wa_idcmp,IDCMP_RAWKEY+
  139.                                        IDCMP_CLOSEWINDOW+
  140.           {Fehler mit LISTVIEWIDCMP  } IDCMP_GADGETUP+
  141.           {Möglichkeiten: a) -->     } IDCMP_GADGETDOWN+
  142.           {               b) LIST-   } IDCMP_INTUITICKS+
  143.           {VIEWIDCMP+IDCMP_MOUSEMOVE+} IDCMP_MOUSEBUTTONS+
  144.           {IDCMP_MOUSEBUTTONS}         IDCMP_MOUSEMOVE);
  145.  
  146.           NWTags[11]:=TagItem(wa_gadgets,long(GList));
  147.           NWTags[12].ti_tag:=tag_done;
  148.  
  149.           Win:=openwindowtaglist(nil,^NWTags[1]);
  150.           IF Win<>NIL
  151.            THEN
  152.             BEGIN
  153.              RP:=Win^.RPort;
  154.              myfont:=setfont(RP,font);
  155.              GT_RefreshWindow(Win,NIL);
  156.              ex:=false;
  157.              REPEAT
  158.               Msg:=Wait_Port(Win^.UserPort);
  159.               Msg:=GT_GetIMsg(Win^.Userport);
  160.               GT_ReplyIMsg(Msg);
  161.               CASE Msg^.class OF
  162.                IDCMP_CLOSEWINDOW : ex:=true;
  163.                IDCMP_RAWKEY      : ex:=true;
  164.               ELSE;END;
  165.              UNTIL ex;
  166.              CloseWindow(Win);
  167.             END;
  168.           FreeGadgets(Glist);
  169.           FreeVisualInfo(vi);
  170.           CloseLib(Gadtoolsbase);
  171.           CloseLib(Intuitionbase);
  172.           CloseLib(GfxBase);
  173.          END;
  174.       END;
  175.    END;
  176. END.
  177.  
  178.  
  179.  
  180.  
  181.