moin,
SubClass mittels ot4xb war klar aber wie löse ich ein Owner Draw des Listview Header aus ?
Code: Alles auswählen
ot4xb_subclasswindow( ::hLv , MyHeadHandler() :New( self ), NIL,"Head_wndproc" )
es kam nichts an ... ja bei Listview hab ich Ownerdraw / Customdraw aktiviert.
Code: Alles auswählen
INLINE METHOD Head_wndproc(hWnd,nMsg,wp,lp,ctx)
LOCAL rc := {0,0,0,0}
Ondummy("Head_wndproc",TIME())
IF nMsg == WM_DRAWITEM
Ondummy("WM_DRAWITEM",TIME())
::Head_DrawItem(wp,lp,hWnd)
also fehlt mir hier noch noch die "Aktivierung" des Owner Draw vom "WC_HEADER" Control.
üblicherweise gibt es eine Konstante wie LVS_OWNERDRAWFIXED für Listview.
unter "WC_HEADER" hab ich nun HDF_OWNERDRAW gefunden ... aber der 3th Buchstabe ist ein
"F" und kein
"N"
ein
"N" steht für Notify Event. diese würde man abfangen und darauf reagieren z.b. per EVAL(Codebock)
ein
"F" steht hier nun für Format ... damit bestückt man die FMT Member einer Structure.
---
das einzige was der Listview Wrapper von Pablo bietet ist
also nur ein Handle zu einer Structure.
ich hatte es dann über die HDITEM Structure versucht.
https://docs.microsoft.com/en-us/window ... -_hd_itema
Code: Alles auswählen
oHDITEM := HDITEM():New()
oHDITEM:fmt := HDF_OWNERDRAW
oHDITEM:mask := HDI_TEXT
oHDITEM:pszText := cBuf
oHDITEM:cchTextMax := LEN(cBuf)
das "lesen/schreiben" der Structure ist kein Problem aber "wann" soll das passieren wenn man keinen Event hat ...
es funktionierte z.b. wenn dem man auf den Header klickt und einen Event auslöst den man dann zum "malen" nutzen kann. Nein ... das lief nicht richtig ... aber wo solle ich die Konstante HDF_OWNERDRAW sonst verwenden ...
---
nun gibt es auch weitere HDF_* Konstanten wie für die "Sortier-Pfeile" und deren Ausrichtung.
Code: Alles auswählen
IF Alignment = LVCFMT_LEFT
oLVCol2:fmt := nor(oLVCol2:fmt,HDF_LEFT ,HDF_BITMAP_ON_RIGHT )
ELSE
oLVCol2:fmt := nor(oLVCol2:fmt,HDF_RIGHT,HDF_BITMAP )
ENDIF
IF ::SortOrder == LVS_SORTASCENDING
oLVCol2:fmt := nOr(oLVCol2:fmt,HDF_SORTUP ) // this make the Icon !
ELSE
oLVCol2:fmt := nOr(oLVCol2:fmt,HDF_SORTDOWN) // this make the Icon !
ENDIF
das ganze geht an die LVCOLUMN() Structure ... hm ...
wir sind der Lösung schon ganz nahe ... wer hat eine Idee
die Lösung gibt es in der nächsten Msg
- XCM_Black1.jpg (290.64 KiB) 5479 mal betrachtet