| |
|
|
Jens-Arne Reumschüssel | Wenn auch erst gut 9 Jahre später... Vielleicht hilft's ja trotzdem noch, oder wenigstens jemand anderem:
'Gridbox(=ListView)-CustomDraw-Beispiel
$H windows.ph
$H messages.ph
$H commctrl.ph
STRUCT NMHDR=hwndFrom&,idFrom&,code&
STRUCT NMCUSTOMDRAW=NMHDR,dwDrawStage&,hdc&,rcLeft&,rcTop&,rcRight&,rcBottom&,dwItemSpec&,uItemState&,lItemlParam&
STRUCT NMLVCUSTOMDRAW=NMCUSTOMDRAW,clrText&,clrTextBk&,iSubItem&,dwItemType&,clrFace&,iIconEffect&,iIconPhase&,iPartId&,iStateId&,rcTextLeft&,rcTextTop&,rcTextRight&,rcTextBottom&,uAlign&
declare _hGB%,_hBende%,_ende%
SUBCLASSPROC
declare b#,lParam&,ret&
if &sWnd=%HWnd
if %sMessage=~WM_NOTIFY
lParam&=&sLParam
dim b#,NMLVCUSTOMDRAW
b#=lParam&
if (b#.hwndFrom&=_hGB%) and (b#.code&=~NM_CUSTOMDRAW)
if b#.dwDrawStage&=~CDDS_PREPAINT'gleich wird das Listview neu gezeichnet
ret&=~CDRF_NOTIFYITEMDRAW'Folgemessages anfordern
elseif b#.dwDrawStage&=~CDDS_ITEMPREPAINT'gleich wird ein Item gezeichnet
'b#.clrText&=$0000FFFF '@rgb(255,255,0) 'Textfarbe der Zelle ändern
'b#.clrTextBk&=$00FFFF00 '@rgb(0,255,255) 'Hintergrundfarbe der Zelle ändern
'ret&=~CDRF_NEWFONT 'ginge auch, dann sind alle Zeilen gleich gefärbt, der nächste elseif-Abschnitt wäre dann unnötig
ret&=~CDRF_NOTIFYSUBITEMDRAW'Folgemessages vor dem Zeichnen jedes einzelnen Subitems anfordern
elseif (b#.dwDrawStage& & (~CDDS_ITEMPREPAINT | ~CDDS_SUBITEM))=(~CDDS_ITEMPREPAINT | ~CDDS_SUBITEM)'gleich wird ein Subitem gezeichnet
'b#.dwItemSpec&=Zeile
'b#.iSubItem&=Spalte
b#.clrText&=@rgb(255,255,b#.dwItemSpec&*13+b#.iSubItem&*30)'Textfarbe der Zelle ändern
b#.clrTextBk&=@rgb(0,200,b#.dwItemSpec&*13+b#.iSubItem&*30)'Hintergrundfarbe der Zelle ändern
ret&=~CDRF_NEWFONT
endif
endif
dispose b#
if ret&<>0
@set("WINPROC",0)'muss sein, sonst geht's nicht
return ret&'CustomDraw-spezifischen Wert zurückgeben
endif
endif
endif
ENDPROC'SUBCLASSPROC
'***** Hauptprogramm
cls
_hGB%=@create("GRIDBOX",%HWnd,"Spalte 1;0;100;Spalte 2;0;100;Spalte 3;0;100;Spalte 4;0;100;Spalte 5;0;100;Spalte 6;0;100",0,0,0,@width(%HWnd),(@height(%HWnd)-40))
_hBende%=@create("BUTTON",%HWnd,"Ende",((@width(%HWnd)\2)-35),(@height(%HWnd)-30),70,20)
@set("FASTMODE",1)'sonst geht's leider nicht
subclass %HWnd,1'nicht die GridBox subclassen, sondern das Hauptfenster (dahin gehen die WM_NOTIFY-Messages)
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
@addstring(_hGB%,"Test|TestTest|TestTestTest|Test|TestTest|TestTestTest")
_ende%=0
whilenot _ende%
waitinput
if @clicked(_hBende%)
_ende%=1
endif
endwhile
subclass %HWnd,0
@set("FASTMODE",0)
end
|
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 22.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Toll! Und für ne gute Idee ist es nie zu spät. Würdest du trotzdem den Beitrag nochmal direkt unter Uwes Beitrag neu erstellen? Dann muss man sich nicht durch einen zusätzlichen Link hangeln. Ich würde ihn verschieben aber die Forumprogrammierung lässt mich grad nicht |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Hmm, aber dann ist die Überschrift weg, wenn ich direkt antworte. Oder meinst Du das anders? |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 23.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Genauso mein ich das. Dann ist zwar die Überschrift weg aber du kannst es ja im Text einfügen. Finde ich jedenfalls besser, als ein Unterthema, wodurch der Thrad unübersichtlicher wird, da man zur Lösung nochmal durchklicken muss. |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Aber dann ist der Eintrag nicht mehr in der Übersicht und der Suche zu finden. Das finde ich deutlich schlechter, als einen Klick mehr machen zu müssen. Oder wird der Text ("Body") der Nachricht in der Suche ebenfalls mit einbezogen? Dann wär's tatsächlich eine Verbesserung. |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 23.05.2018 ▲ |
|
|
|
|
Jens-Arne Reumschüssel | ...ach egal, ich poste das einfach noch einmal direkt unter dem Originaleintrag, dann sind alle Wünsche bedient. |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 23.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Wieso? Wenn mann Listview, Customdraw oder Subclassing eingibt, kommt doch dieser Thread. Oder meinst du, jemand sucht nach "so gehts"? |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Nein, das natürlich nicht. Aber die Lösung taucht dann eben auch nicht in der Threadübersicht auf, wo sie jemandem ins Auge fallen könnte, der vielleicht genau dasselbe Problem hat. Das ist aber auch schon alles. Meinetwegen kann dieser Unterthread auch gerne gelöscht werden. |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 23.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Wir lassen ihn einfach erstmal drin. |
|
|
| |
|
|
|
p.specht
| Jedenfalls eine ganz tolle Sache, hab sowas noch nie gesehen! Ähnliches mit einfärbig Einfärben gabs mal von Sebastian Koenig, aber ich finde das Teil leider nicht mehr... |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 24.05.2018 ▲ |
|
|
|