Wenn du eine ListView nimmst mit
OwnerData := True
, dann kannst du das mit einer
TObjectList<T>
sehr einfach behandeln.
Delphi-Quellcode:
type
TDataItem = class
property Name : string;
property Date : TDateTime;
end;
TMyForm = class( TForm )
ListView1 : TListView;
procedure ListView1Data( Sender:TObject; Item : TListViewItem );
private
FAllList : TObjectList<TDataItem>;
FHitList : TList<TDataItem>;
procedure SetHitList( AHitList : TList<TDataItem> );
end;
procedure TMyForm.SetDataList( AHitList : TList<TDataItem> );
begin
// Alte Liste löschen
if FHitList <> FAllList then
FreeAndNil( FHitList );
// Neue Liste setzen
FHitList := AHitList;
// Items.Count setzen
if Assigned( FHitList ) then
ListView1.Items.Count := FHitList.Count
else
ListView1.Items.Count := 0;
end;
procedure ListView1Data( Sender:TObject; Item : TListViewItem );
var
LItem : TDataItem;
begin
LItem := FHitList[Item.Index];
Item.Caption := LItem.Name;
Item.SubItems.Add( DateToStr( LItem.Date ) );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)