{ Programm: ListView ~~~~~~~~ Sinn: arbeiten mit Listviewgadgets... diesmal mit "MinList" ~~~~~ Sprache: MaxonPASCAL 3 / KickPascal 2.12 & OS 2.0-Includes ~~~~~~~~ Copyright: FREEWARE, bei Routinenverwendung wird der Autor ~~~~~~~~~~ im Infofile / Dok erwähnt und erhält das fertige nichtkomerzielle Programm zugesendet. Autor: PackMAN ~~~~~~ c/o Falk Zühlsdorff Lindenberg 66 D-98693 Ilmenau/Thüringen Kommentar: Version für MAXON ~~~~~~~~~~ ab OS 2.0 } Program LV; USES INTUITION,GRAPHICS,GADTOOLS,EXECIO; TYPE Txtype = array[0..19] OF string[35]; VAR Win : p_Window; NWTags : array[1..14] of TagItem; STATIC; RP : p_RastPort; PScr : p_Screen; drawinfo : p_drawinfo; txattr : TextAttr; STATIC; font : p_textfont; myfont : long; STATIC; vi : PTR; title : string;STATIC; msg : p_IntuiMessage; ng : NewGadget;STATIC; G,PGad,Glist : p_Gadget; LVTags : array[0..3] of TagItem;STATIC; ex : boolean;STATIC; nodelist : array[0..19] of p_node; i : byte; mylist : minlist; Tx : Txtype;STATIC; BEGIN PScr:=NIL; PScr:=lockpubscreen(NIL); IF PScr<>NIL THEN BEGIN drawinfo:=getscreendrawinfo(PScr); IF drawinfo<>NIL THEN BEGIN font:=drawinfo^.dri_font; vi:=GetVisualInfoA(PScr,nil); Freescreendrawinfo(PScr,drawinfo); UnlockPubScreen(NIL,PScr); PGad:=NIL; GList:=NIL; PGad:=CreateContext(^GList); IF PGad<>NIL THEN BEGIN txattr:=TextAttr('topaz.font',8,0,0); {simple for test} Font:=OpenFont(^txattr); Tx:=Txtype(' Bsp. für ein Listviewgadget in', ' MaxonPASCAL 3 / KickPASCAL 2.12', '', ' V0.27 mit "MinList"', '', ' © & P by', '', ' PackMAN', ' (Falk Zühlsdorff)', '', ' es geht auch mit ', '', ' ARRAY of LONG', '', ' Greetings fly to:', '', ' dopW, Janosh, Diesel', ' Rascal,Røgersøft...', '', ''); FOR i:=0 TO 19 DO nodelist[i]:=AllocMem(sizeof(Node),MEMF_CLEAR); {ohne SpeicherAlloc Reise nach Indien} nodelist[0]^.ln_succ:=^nodelist[1]^.ln_succ; nodelist[0]^.ln_pred:=^mylist.mlh_head; nodelist[0]^.ln_type:=0; nodelist[0]^.ln_pri:=0; nodelist[0]^.ln_name:=^Tx[0]; FOR i:=1 TO 18 DO BEGIN nodelist[i]^.ln_succ:=^nodelist[i+1]^.ln_succ; nodelist[i]^.ln_pred:=^nodelist[i-1]^.ln_succ; nodelist[i]^.ln_type:=0; nodelist[i]^.ln_pri:=0; nodelist[i]^.ln_name:=^Tx[i]; END; nodelist[19]^.ln_succ:=^mylist.mlh_tail; nodelist[19]^.ln_pred:=^nodelist[18]^.ln_succ; nodelist[19]^.ln_type:=0; nodelist[19]^.ln_pri:=0; nodelist[19]^.ln_name:=^Tx[19]; mylist.mlh_head:=nodelist[0]; mylist.mlh_tail:=NIL; mylist.mlh_tailpred:=nodelist[2]; LVTags[0]:=TagItem(GTLV_Top,0); LVTags[1]:=TagItem(GTLV_ReadOnly,ord(true)); LVTags[2]:=TagItem(GTLV_Labels,long(^mylist));{ <-- vergl. } LVTags[3].ti_tag:=Tag_End; { V0.26 } ng:=NewGadget(60,32,280,50,NIL,^Txattr,0,0,vi,NIL); g:=CreateGadgetA(LISTVIEW_KIND,pgad,^ng,^LVtags[0]); title:='ListView 0.27 © & P by PackMAN 03.07.94'; NWTags[1] :=TagItem(wa_left,0); NWTags[2] :=TagItem(wa_top,0); NWTags[3] :=TagItem(wa_width,400); NWTags[4] :=TagItem(wa_height,100); NWTags[5] :=TagItem(wa_activate,ord(true)); NWTags[6] :=TagItem(wa_smartrefresh,ord(true)); NWTags[7] :=TagItem(wa_rmbtrap,ord(true)); NWTags[8] :=TagItem(wa_title,long(^title)); NWTags[9] :=TagItem(wa_flags,WFLG_CLOSEGADGET); NWTags[10]:=TagItem(wa_idcmp,IDCMP_RAWKEY+ IDCMP_CLOSEWINDOW+ {Fehler mit LISTVIEWIDCMP } IDCMP_GADGETUP+ {Möglichkeiten: a) --> } IDCMP_GADGETDOWN+ { b) LIST- } IDCMP_INTUITICKS+ {VIEWIDCMP+IDCMP_MOUSEMOVE+} IDCMP_MOUSEBUTTONS+ {IDCMP_MOUSEBUTTONS} IDCMP_MOUSEMOVE); NWTags[11]:=TagItem(wa_gadgets,long(GList)); NWTags[12].ti_tag:=tag_done; Win:=openwindowtaglist(nil,^NWTags[1]); IF Win<>NIL THEN BEGIN RP:=Win^.RPort; myfont:=setfont(RP,font); GT_RefreshWindow(Win,NIL); ex:=false; REPEAT Msg:=Wait_Port(Win^.UserPort); Msg:=GT_GetIMsg(Win^.Userport); GT_ReplyIMsg(Msg); CASE Msg^.class OF IDCMP_CLOSEWINDOW : ex:=true; IDCMP_RAWKEY : ex:=true; ELSE;END; UNTIL ex; CloseWindow(Win); END; FreeGadgets(Glist); FreeVisualInfo(vi); CloseLib(Gadtoolsbase); CloseLib(Intuitionbase); CloseLib(GfxBase); END; END; END; END.