Hallo zusammen.
Ich will beim "OnCustomDrawItem" Ereigniss zeilen in einer ListView verschieden einfärben. Der ListView werden laufend neue Zeilen hinzugefügt und wieder gelöscht. Nun habe ich das Problem, dass "OnCustomerDrawItem" nicht die ganze Zeile färbt, sondern jeweils nur das Subitem[0]. Wenn ich aber auf eine Zeile klicke, wird die Farbe der geklickten Zeile korrekt dargestellt.
Im OnCustomDrawItem Ereigniss steht folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var RowColor : TColor; begin if (Item=nil) then Exit; RowColor := $BFBFBF; if lowercase(Item.SubItems[0]) = 'undefined' then RowColor:=$BFBFBF; if lowercase(Item.SubItems[0]) = 'new' then RowColor:=$66FFFF; if lowercase(Item.SubItems[0]) = 'handled' then RowColor:=$00FF66; if lowercase(Item.SubItems[0]) = 'connected' then RowColor:=$009900; if lowercase(Item.SubItems[0]) = 'transfered' then RowColor:=$FFCC00; if lowercase(Item.SubItems[0]) = 'hangup' then RowColor:=$BFBFBF; if lowercase(Item.SubItems[0]) = 'alerting 1' then RowColor:=$008CFF; if lowercase(Item.SubItems[0]) = 'alerting 2' then RowColor:=$008CFF; Sender.Canvas.Brush.Color := RowColor; |
Habe es auch schon mit Begin-,End-Update versucht. Repaint half leider auch nichts.
Kann ich dieses Problem irgendwie lösen, oder ist dies alg. eine Schwäche des OnCustomDrawItem Ereignisses, oder was weiss ich...
Das ganze sieht dann so aus:
Edit: Link entfernt
Zuunterst ist nur das SubItem[0] Grün und Hellgrün, es müsste aber eigentlich die ganze Zeile färben.
Die grünen und orangen Zeilen oben habe ich markiert, somit wird auch die Anzeige des markierten Items aktualisiert und das ganze Item erhält die gleiche Farbe. So sollte es sein!
Bin mit meinem Latein am Ende.
Für jede Hilfe bin ich sehr dankbar!
Gruss