Registriert seit: 28. Sep 2012
60 Beiträge
|
TListView + OwnerData + CustomDrawItem
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)
|