Quelltexte/ Codesnippets | | | | Uwe ''Pascal'' Niemeier | Hi Leute!
Hier ein paar Möglichkeiten, ListViews etwas interessanter zu gestalten (XProfan 11): KompilierenMarkierenSeparierenwindow 10,100-750,300
$H Messages.ph
$H Windows.ph
$H commctrl.ph
struct HD=Mask&,cxy&,Text&,hbm&,TextMax&,fmt&,Param&,Image&,Order&,Type&,Filter&
declare hd#
dim hd#,HD
--Alle Spalten links
var a$=Spalte 1;0;120;Spalte 2;0;120;Spalte 3;0;120;Spalte 4;0;120;Spalte 5;0;120
var Lv&=create(gridbox,%hwnd,a$,0,10,30,700,200)
--Lv ohne Header:
setstyle Lv&,getstyle(Lv&) | ~LVS_NOCOLUMNHEADER
var Header&=sendmessage(Lv&,~LVM_GETHEADER,0,0)
addstring(Lv&,Test1a|Test2a|Test3a|Test4a|Test5a)
--Bei Bedarf:
setstyle Header&,$50000002--Header aktivieren
external(uxtheme.dll,SetWindowTheme,Header&,,)--XP-Style aus
var IcoList&=create(imagelist,16,16)
ImageList(AddIcon,IcoList&,~LoadIcon(0,32513))-- X-Icon
sendmessage(Header&,~HDM_SETIMAGELIST,0,IcoList&)
mcls 16,32--Bei aktivem Header überlagert hohes bmp den Tracking-Streifen!
startpaint -1
cls 255
endpaint
var Pic1&=create(hPic,0,&MEMBMP)
mcls 40,14
startpaint -1
cls 255*255
endpaint
var Pic2&=create(hPic,0,&MEMBMP)
--Kein Text: HDF_STRING weglassen
hd#.Mask&=~HDI_BITMAP | ~HDI_FORMAT
hd#.hbm&=Pic1&
hd#.fmt&=~HDF_STRING | ~HDF_BITMAP | ~HDF_RIGHT
sendmessage(Header&,~HDM_SETITEM,0,hd#)
hd#.Mask&=~HDI_BITMAP | ~HDI_FORMAT
hd#.hbm&=Pic2&
hd#.fmt&=~HDF_STRING | ~HDF_BITMAP | ~HDF_BITMAP_ON_RIGHT | ~HDF_RIGHT
sendmessage(Header&,~HDM_SETITEM,1,hd#)
hd#.Mask&= ~HDI_IMAGE | ~HDI_FORMAT
hd#.Image&=0---Icon aus ImageList
hd#.fmt&=~HDF_STRING | ~HDF_IMAGE | ~HDF_RIGHT
sendmessage(Header&,~HDM_SETITEM,2,hd#)
hd#.Mask&=~HDI_FORMAT
hd#.fmt&=~HDF_STRING | ~HDF_RIGHT | $200--HDF_SORTDOWN
sendmessage(Header&,~HDM_SETITEM,3,hd#)
hd#.Mask&=~HDI_FORMAT
hd#.fmt&=~HDF_STRING | ~HDF_RIGHT | $400--HDF_SORTUP
sendmessage(Header&,~HDM_SETITEM,4,hd#)
--aktiver Header durchbricht WaitInput bei Klicken *und* loslassen!
print hier klicken!
--Änderung der Textausrichtung des Headers wirkt sich auch auf das Lv aus,
--wird aber erst nach Neuzeichnen sichtbar:
waitinput
repaint
waitinput
--Größe & Position des Headers läßt sich im Prinzip ändern;
--wird aber vom Lv bei nächster Gelegenheit zurückgesetzt.
--Könnte aber als Toolbar verwendet werden :-)
setwindowpos Header&=0,0-700,100
repaint
waitinput
addstring(Lv&,Test1b|Test2b|Test3b|Test4b|Test5b)
repaint
while 1
waitinput
endwhile
KompilierenMarkierenSeparierenwindow 10,100-450,300
$H Messages.ph
$H Windows.ph
$H commctrl.ph
declare Lv#
struct Lv=Mask&,Item&,SubItem&,State&,StateMask&,Text&,TextMax&,Image&
dim Lv#,Lv
proc LvSetIcon---------------------------------------------LvSetIcon
Lv#.Item&=&(2)
Lv#.SubItem&=&(3)
Lv#.Mask&=~LVIF_IMAGE
Lv#.Image&=%(4)
sendmessage(&(1),~LVM_SETITEM,0,Lv#)
endproc-------------------------------------------------------------
var IcoList&=create(ImageList,16,16)
ImageList(AddIcon,IcoList&,~LoadIcon(0,32512))
ImageList(AddIcon,IcoList&,~LoadIcon(0,32513))
ImageList(AddIcon,IcoList&,~LoadIcon(0,32514))
ImageList(AddIcon,IcoList&,~LoadIcon(0,32515))
var a$=Spalte 1;0;120;Spalte 2;0;120;Spalte 3;0;120
var Lv&=create(gridbox,%hwnd,a$,0,10,30,400,200)
sendmessage(Lv&,~LVM_SETIMAGELIST,~LVSIL_SMALL,IcoList&)
sendmessage(Lv&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVS_EX_SUBITEMIMAGES | ~LVS_EX_GRIDLINES)
--Gitterlinien überzeichnen Icons teilweise!
--Lv ohne Header:
setstyle Lv&,getstyle(Lv&) | ~LVS_NOCOLUMNHEADER
a$=Test x a|Test x b|Test x c|Test x d|Test x e
whileloop 1,5
addstring(Lv&,translate$(a$,x,str$(&loop)))
endwhile
LvSetIcon(Lv&,0,0,1)--Aufruf: LvSetIcon(Handle&,Zeile%,Spalte%,Icon%)
LvSetIcon(Lv&,1,1,2)--Werte für Zeile,Spalte,Icon 0-basiert!
LvSetIcon(Lv&,2,2,3)
LvSetIcon(Lv&,3,0,getcount(IcoList&))
LvSetIcon(Lv&,4,0,99)
LvSetIcon(Lv&,4,2,0)
while 1
waitinput
endwhile
@ Thomas: Meintest du sowas?
SeeYou Pascal
[offtopic] @ iF: Ist mir gerade aufgefallen: In der Codebox wird ja die Original-Schreibweise (Groß/Klein) beibehalten Wäre aber schön wenn auch Leerzeilen erhalten blieben. Edit von iF: Mit den Leerzeichen und Tabs kämpfe ich schon eine Weile - wenn ich fertig habe werden (natürlich) auch Leerzeichen und Tabs (wenn nicht grad führend oder abschliessend) beibehalten. [/offtopic] |
| | | | |
| | Thomas Freier | He Pascal,
Danke für die Beispiele. Ist das, was ich suchte. |
| | | | |
| | | Ich bin mir nicht sicher ob das so gewollt ist (Screenshot) beim ersten Male Draggen der Spaltenbreite beim Beispiel 1:
Ab dem 2. Male (Draggen der Spaltenbreite) hingegen erhalte ich keine Anzeigefehler (?).
Aber: Juhu! So geht das also! |
| | | | |
| | Uwe ''Pascal'' Niemeier | Hi iF!
Ich bin mir nicht sicher ob das so gewollt ist (Screenshot) beim ersten Male Draggen der Spaltenbreite
Gewollt nicht ,aber absehbar
Es wird ja nach jedem WaitInput zu Demozwecken irgendwas ausprobiert.
Bei Aktionen im Header werden aber sogar mehrere WaitInputs durchbrochen; darum steht ja im Fenster extra Hier klicken
SeeYou Pascal |
| | | | |
| | | Ah! |
| | | | |
|
Zum QuelltextThemenoptionen | 6.277 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |