ok, ich habs gefunden :
in OnCustomDrawItem / OnCustomDrawSubItem darf man nicht Sender.ItemIndex
lesen
die Information kann man ja auch aus State = cdsSelected holen
zum Beweis lustiges Debuglog:
Code:
procedure Txx.OnCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
OutputDebugString(PChar(format('OnDrawItemA : %d %s',[item.Index, Item.Caption])));
DefaultDraw := sender.itemindex <> -6; // Lesezugriff auf ItemIndex -- DefaultDraw ist und bleibt immer true
OutputDebugString(PChar(format('OnDrawItemB : %d %s',[item.Index, Item.Caption])));
end;
Debug-Ausgabe: OnDrawItemA : 0 Item#0 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemB : 1 Item#1 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemA : 1 Item#1 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemB : 1 Item#1 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemA : 2 Item#2 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemB : 1 Item#1 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemA : 3 Item#3 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemB : 1 Item#1 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemA : 4 Item#4 Prozess vlvdemo.exe (4868)
Debug-Ausgabe: OnDrawItemB : 1 Item#1 Prozess vlvdemo.exe (4868)
sender.ItemIndex war 1;
wenn sender.ItemIndex = -1 tritt der Effekt nicht auf
mfg