Fonte/ Codesnippets | | | | ![Uwe Pascal Niemeier: 13.03.2009](.././../../i/a/1470490353453dc4c350ec9.jpg) 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
ef='./../../funktionsreferenzen/xprofan/endwhile/'>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 Testata:
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 per 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 ![](.././../../i/s/qq8.gif) 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 (naturalmente) auch Leerzeichen und Tabs (wenn nicht grad führend oder abschliessend) beibehalten. [/offtopic] |
| | | | |
| | ![Thomas Freier: 13.03.2009](.././../../i/a/722278123487bd8c272307.gif) Thomas Freier | He Pascal,
Danke per die Beispiele. Ist das, was ich suchte. |
| | | | |
| | ![iF: 13.03.2009](.././../../i/a/1.gif) | Ich bin mir nicht sicher ob das so gewollt ist (Screenshot) beim ersten Male Draggen der Spaltenbreite beim Beispiel 1:
![](https://xprofan.com/files/zwischenablage02.png_1236952016_1_6172.png)
Ab dem 2. Male (Draggen der Spaltenbreite) hingegen erhalte ich keine Anzeigefehler (?).
Aber: Juhu! So geht das also! ![](.././../../i/s/__upl_ext_1111498551.gif) |
| | | | |
| | ![Uwe Pascal Niemeier: 13.03.2009](.././../../i/a/1470490353453dc4c350ec9.jpg) 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 ![](.././../../i/s/__upl_ext_1111498551.gif)
Es wird ja nach jedem WaitInput zu Demozwecken irgendwas ausprobiert.
Bei Aktionen im Testata werden aber sogar mehrere WaitInputs durchbrochen; darum steht ja im Fenster extra Hier klicken ![](.././../../i/s/__upl_ext_1111498528.gif)
SeeYou Pascal |
| | | | |
| | ![iF: 13.03.2009](.././../../i/a/1.gif) | Ah! ![](.././../../i/s/_n_red_smile.gif) |
| | | | |
|
Zum QuelltextThemeninformationenDieses Thema hat 3 subscriber: |