Hi Leute.
Ich würde gern ein Listview gruppieren, aber ich komme absolut nicht mit den ganzen Strukturen und so klar. Hat vielleicht schon jemand damit Erfahrung gemacht?
Jac:-)
Hi Leute.
Ich würde gern ein Listview gruppieren, aber ich komme absolut nicht mit den ganzen Strukturen und so klar. Hat vielleicht schon jemand damit Erfahrung gemacht?
Jac:-)
Was war denn mit diesem Code von Pascal?
'****************** ListView-Demo: Grouping
'****************** XProfan 10 / Windows XP
'****************** © by TCS (Uwe "Pascal" Niemeier) 05'2007
window 100,10-500,550
usefont "MS Sans Serif",15,7,0,0,0
setdialogfont 1
usermessages 16
$H Windows.ph
$H commctrl.ph
declare Text#
dim Text#,255
declare LvGroup#
struct LVGROUP=Size&,Mask&,pszHeader&,cchHeader&,pszFooter&,cchFooter&,\
GroupId&,StateMask&,State&,Align&
dim LvGroup#,LVGROUP
LvGroup#.Size&=sizeof(LvGroup#)
LvGroup#.Mask&=$11'--LVGF_HEADER | LVGF_GROUPID
LvGroup#.pszHeader&=Text#
declare Lv#
struct Lv=Mask&,Item&,x#(32),GroupID&
dim Lv#,Lv
Lv#.Mask&=$100'--LVIF_GROUPID
var Lv&=create("gridbox",%hwnd,"a;0;50;b;0;50;c;0;50;d;0;50;e;0;50",0,10,10,300,310)
sendmessage(Lv&,(~LVM_FIRST+157),1,0)'--LVM_ENABLEGROUPVIEW (Grouping ein/aus)
~MultiByteToWideChar(0,0,"Test",-1,Text#,255)'-------------Gruppe 1 anlegen
LvGroup#.GroupId&=111
sendmessage(Lv&,(~LVM_FIRST+145),-1,LvGroup#)'--LVM_INSERTGROUP
~MultiByteToWideChar(0,0,"Noch'n Test",-1,Text#,255)'------Gruppe 1 anlegen
LvGroup#.GroupId&=222
sendmessage(Lv&,(~LVM_FIRST+145),-1,LvGroup#)'--LVM_INSERTGROUP
addstring(Lv&,"Name 1|Info 1|Extra 1|Daten 1|Text 1")
addstring(Lv&,"Name 2|Info 2|Extra 2|Daten 2|Text 2")
addstring(Lv&,"Name 3|Info 3|Extra 3|Daten 3|Text 3")
Lv#.Item&=0'-------------------------------------Zeile 0
Lv#.GroupID&=111
sendmessage(Lv&,~LVM_SETITEM,0,Lv#)
Lv#.Item&=1'-------------------------------------Zeile 1
Lv#.GroupID&=222
sendmessage(Lv&,~LVM_SETITEM,0,Lv#)
Lv#.Item&=2'-------------------------------------Zeile 2
Lv#.GroupID&=111
sendmessage(Lv&,~LVM_SETITEM,0,Lv#)
while 1
waitinput
case %umessage=16:break'-------Ende
endwhile
Alles anzeigen
Huch, den kenn ich gar nicht.:D
Hab mal ne Inc daraus zusammengekloppt. Sollte ab Windows XP klappen und ist sicher noch ausbaubar. Vielleicht wills ja jemand mal erweitern.:D
'Basierend auf einem Quelltext von Uwe "Pascal" Niemeier
Def MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
proc EnableGrouping
Parameters handle&,enable%
sendmessage(handle&,$109D,enable%,0)
case enable%=0:sendmessage(handle&,$10A0,0,0)
endproc
proc CreateGroup
Parameters handle&,id&,text$
declare text#,lvgroup#
dim text#,255
dim LvGroup#,LVGROUP
LvGroup#.Size&=sizeof(LvGroup#)
LvGroup#.Mask&=$11
LvGroup#.pszHeader&=Text#
MultiByteToWideChar(0,0,Addr(text$),-1,Text#,255)
LvGroup#.GroupId&=id&
sendmessage(handle&,$1091,-1,LvGroup#)
Dispose text#,lvgroup#
endproc
proc HasGroups
Parameters handle&
Return sendmessage(handle&,$10AF,0,0)
endproc
proc SetGroup
Parameters handle&,item&,group&
declare lv#
Dim lv#,lv
Lv#.Item&=item&
Lv#.GroupID&=group&
Lv#.Mask&=$100
sendmessage(handle&,$1006,0,Lv#)
Dispose lv#
endproc
Alles anzeigen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!