Einzelnen Beitrag anzeigen

mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#1

TListView + OwnerData + CustomDrawItem

  Alt 23. Jan 2013, 16:50
Hallo,

ich hab da mal n Problem:

ich hab n TListView mit OwnerData und CustomDrawItem/CustomDrawSubItem erstellt; ViewStyle Report

die Daten werden auch korrekt dargestellt, also OnData füllt Item.Caption und SubItems entsprechend Item.Index

wenn aber OnCustomDrawItem aufgerufen wird steht im übergebenen Item.Index (meistens) Sender.ItemIndex; also der Index das selectierten Eintrages; CustomDrawState hingegen wird korrekt übergeben
bei nem 12 Zeiligen Listview ruft er 12x OnCustomDrawItem auf, aber jedesmal steht in item.index ne Null; nur für die erste Zeile ist cdsSelected in State
bei OnCustomDrawSubitem liefert er korrekte Indecees

ohne OwnerData läufts korrekt

hat das schonmal wer gesehen, oder hab ich's selbst verbockt?

nochmal konkreter: mit

procedure Txx.CustomDrawItem(...);
begin
OutputDebugString(PChar(format('CustomDrawItem : %d %s %s',[item.Index,item.Caption, StateToStr(State)])));
end;

procedure Txx.CustomDrawSubItem(...);
begin
OutputDebugString(PChar(format('CustomDrawSubItem : %d %d %s',[item.Index, subitem, item.Caption])));
end;

bekomm ich mit OwnerData ca. folgenden DebugOutput
CustomDrawItem : 0 1.Zeile [cdsSelected]
CustomDrawSubItem : 0 0 1.Zeile
CustomDrawItem : 0 1.Zeile []
CustomDrawSubItem : 1 0 2.Zeile
CustomDrawItem : 0 1.Zeile []
CustomDrawSubItem : 2 0 3.Zeile
CustomDrawItem : 0 1.Zeile []
CustomDrawSubItem : 3 0 4.Zeile
CustomDrawItem : 0 1.Zeile []
CustomDrawSubItem : 4 0 5.Zeile

ohne OwnerData: (und so erwarte ich es auch mit Ownerdata)
CustomDrawItem : 0 1.Zeile [cdsSelected]
CustomDrawSubItem : 0 0 1.Zeile
CustomDrawItem : 1 2.Zeile []
CustomDrawSubItem : 1 0 2.Zeile
CustomDrawItem : 2 3.Zeile []
CustomDrawSubItem : 2 0 3.Zeile
CustomDrawItem : 3 4.Zeile []
CustomDrawSubItem : 3 0 4.Zeile
CustomDrawItem : 4 5.Zeile []
CustomDrawSubItem : 4 0 5.Zeile

sowohl mit als auch ohne Ownerdata werden die korrekten Strings im Listview angezeigt, ich hab aber keine Möglichkeit, die Zeilen entsprechend des Indexes einzufärben o.ä
und natürlich ändert meine OnData-Fkt nicht den Item.Index

mfg

Geändert von mentaltec (24. Jan 2013 um 01:16 Uhr)
  Mit Zitat antworten Zitat