Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Custom Draw mit Gridboxen
Autor: Jens-Arne Reumschüssel (---.dip0.t-ipconnect.de)
Datum:   12.11.17 19:45

Hallo zusammen,

ich versuche seit einiger Zeit, mit der WinAPI mittels customdraw die Farben einzelner Zellen einer Gridbox zu verändern. Ich verstehe nicht, warum das nicht funktioniert. Kennt sich jemand von Euch damit aus? Ist vielleicht die Profan-Gridbox irgendwie so initialisiert, dass das damit nicht geht? Hier der - nicht funktionierende - Beispielcode:

 $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 _ende%,_hGB%,_OldLstVProc&,_i%,_s$
 
 '-CallBack Routine Gridbox----------------------------------------------------
 Proc ListViewWndProc
   Parameters hWnd&,Message&,wParam&,lParam&
   declare b#,ret&
   ret&=0
   if message&=~WM_NOTIFY
     dim b#,NMLVCUSTOMDRAW
     b#=lparam&
     if b#.code&=~NM_CUSTOMDRAW
       if b#.dwDrawStage&=~CDDS_PREPAINT 'gleich wird das Listview neu gezeichnet
         ret&=~CDRF_NOTIFYITEMDRAW 'Folgemessages anfordern
       endif
       if ((b#.dwDrawStage& & ~CDDS_ITEMPREPAINT)=~CDDS_ITEMPREPAINT) and ((b#.dwDrawStage& & ~CDDS_SUBITEM)=0) 'gleich wird ein Item gezeichnet
         ret&=~CDRF_NOTIFYSUBITEMDRAW 'Folgemessages vor dem Zeichnen jedes einzelnen Subitems anfordern
         'beep 'wenn man dies beep aktiviert, sieht man, dass dieses Stadium erreicht wird
       endif
       if (b#.dwDrawStage& & (~CDDS_ITEMPREPAINT | ~CDDS_SUBITEM))=(~CDDS_ITEMPREPAINT | ~CDDS_SUBITEM) 'gleich wird ein Subitem gezeichnet
         beep
         'Hier kommen wir gar nicht erst hin (nichts piept) - warum???
         b#.clrText&=@rgb(255,255,0) 'Textfarbe der Zelle ändern
         b#.clrTextBk&=@rgb(0,255,255) 'Hintergrundfarbe der Zelle ändern
         ret&=~CDRF_NEWFONT
       endif
     endif
     dispose b#
   endif
   if ret&<>0
     return ret& 'Customdraw-spezifischen Wert zurückgeben
   else
     return ~CallWindowProc(_OldLstVProc&,hWnd&,Message&,wParam&,lParam&) 'kein Customdraw --> Windows-Standardroutine aufrufen
   endif
 EndProc
 
 '***** Hauptprogramm
 windowstyle 1+2+4+8+16+512
 window 0,(%maxy-470-40)-%maxx,470
 popup "&Datei"
 appendmenu 190,"&beenden"
 _s$=""
 for _i%,0,6
   case _s$<>"": _s$=_s$+";"
   _s$=_s$+@str$(_i%)+";0;"+@str$((@width(%HWnd)-3)\7)
 endfor
 _hGB%=@create("GRIDBOX",%HWnd,_s$,0,0,0,@width(%HWnd),@height(%HWnd))
 for _i%,0,18
   @addstring(_hGB%,@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00")
 endfor
 settext _hGB%,1,1,"TEST"
 'Callback für Gridbox einrichten
 @set("FastMode",1) 'erweitertes Messagehandling abschalten
 _OldLstVProc&=~GetWindowLong(_hGB%,~GWL_WNDPROC)
 ~SetWindowLong(_hGB%,~GWL_WNDPROC,@procaddr("ListViewWndProc",4))
 '1x neu zeichnen, um die Wirkung zu sehen
 @showwindow(%HWnd,0)
 @showwindow(%HWNd,1)
 'Eingabehandling
 _ende%=0
 whilenot _ende%
   waitinput
   if @iskey(27) or (%key=2) or @menuitem(190)
     _ende%=1
   endif
 endwhile
 'Callback für Gridbox beenden
 ~SetWindowLong(_hGB%,~GWL_WNDPROC,_OldLstVProc&)
 @set("FastMode",0) 'erweitertes Messagehandling wieder einschalten
 end
 




Nachricht bearbeitet (12.11.17 19:54)

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 12.11.17 19:45 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 18.11.17 19:34 
 Re: Custom Draw mit Gridboxen  Neu
p. specht 19.11.17 23:39 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 20.11.17 00:38 
 Re: Custom Draw mit Gridboxen  Neu
Gerd Telzerow 03.12.17 20:51 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 04.12.17 19:08 
 Re: Custom Draw mit Gridboxen  Neu
Gerd Telzerow 04.12.17 20:07 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 04.12.17 20:47 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org