Textfarbe einer einzelnen Zeile mit CListCtrl



  • Hallo!

    Ich möchte in einem CListCtrl die Textfarbe einzelner Zeilen bestimmen!?
    irgendwie komm ich da nicht weiter. settextcolor ändert den ganzen ctrl.
    hat jemand eine idee? hab schon danach gesucht, aber nichts brauchbares gefunden.
    vielen dank schonmal!

    jens



  • Das Control sendet NM_CUSTOMDRAW notifications, während es sich zeichnet. Diese Notifications erlauben es, einzelne Aspekte zu verändern.

    CodeProject hat 'nen super Artikel (natürlich In Englisch...)

    http://www.codeproject.com/listctrl/lvcustomdraw.asp



  • der artikel ist wirklich klasse 👍 ! hat gleich mit etwas experimentieren funktioniert, aber allein wär ich niemals nich auf diese lösung gekommen. hab schon mit der CXListCtrl-Klasse experimentiert, die gefällt mir aber nicht so wie diese lösung.
    man kann zwar nicht einfach farbig reinschreiben, sondern man muss sich merken welche zeile welche farbe bekommen hat und sie quasi immer wieder setzen, aber das nehm ich gern in kauf.
    vielen dank nochmal für den tip!

    Jens

    ps.: kann mir jemand sagen wozu man die funktion "BOOL SetItemData( int nItem, DWORD dwData )" von CListCtrl verwendet bzw. wie dwData definert ist? was steht da alles drin, bzw. welche informationen kann man damit übergeben?



  • SetItemData:

    hier kann man seinen "eigenen" LONG-Wert an einen Listeneintrag "Anhängen". Das kann z.B. ein Index sein, oder ein Pointer. Das gibt's für alle Container-Controls (ListBox, ListViewCtrl, Tree, Combobox...).

    Windows "faßt" den Wert nicht an. Es ist "good practice", sich nicht auf den Text oder die Position zu verlassen, sondern immer über ein im ItemData gesetzten Token zu gehen. (Sortieren, Internationalisierung, Änderungen usw.)

    (Ich halt' mich zwar auch nicht immer dran, aber ich weiß wenigstens, was ich alles falsch mach 😉 )

    Bei Pointern muß man halt aufpassen, die werden von Windows nicht automatisch gelöscht. Entweder hält man die eigentlichen Daten parallel (macht sich besser), oder man hängt sich an die jeweilige ITEM-DELETE-Notification und löscht die Daten.

    der artikel ist wirklich klasse!

    yup 😉


Anmelden zum Antworten