Italia
Fonte/ Codesnippets

Aufpeppen Gridbox Listview

 

Uwe
''Pascal''
Niemeier
Hi Leute!

Hier ein paar Möglichkeiten, ListViews etwas interessanter zu gestalten (XProfan 11):
KompilierenMarkierenSeparieren
window 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


KompilierenMarkierenSeparieren
window 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
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]
 
13.03.2009  
 




Thomas
Freier
He Pascal,

Danke per die Beispiele. Ist das, was ich suchte.
 
Gruß Thomas
Windows XP SP2, XProfan X2
13.03.2009  
 



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!

8 kB
Hochgeladen:13.03.2009
Downloadcounter316
Download
 
13.03.2009  
 




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 Testata werden aber sogar mehrere WaitInputs durchbrochen; darum steht ja im Fenster extra Hier klicken

SeeYou
Pascal
 
13.03.2009  
 



Ah!
 
13.03.2009  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

6.272 Views

Untitledvor 0 min.
Gast.081512.10.2024
Walter19.07.2024
Member 862464113.05.2024
Axel Berse08.11.2023
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie