Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: TListView - viele Daten - viel Zeit ...

  Alt 17. Jul 2014, 21:36
So, ich habe es nur ganz kurz gemacht, eigentlich könnte man das noch deutlich schöner machen. Ergebnisse jedenfalls:
Das Umschalten zwischen den beiden Listen benötigt bei 9000 Personen ca. 2ms
Der Refresh der Personen-Liste benötigt bei 9000 Personen ca. 2ms

Das Umschalten zwischen den beiden Listen benötigt bei 10000 Adressen ca. 2ms
Der Refresh der Adressen-Liste benötigt bei 10000 Adressen ca. 2ms

Das Projekt liegt im Anhang.

Füge ich die Daten direkt in die Knoten als Daten ein, dauern die Operationen ca. 10ms. Sprich anders als im Anhang:
Delphi-Quellcode:
procedure FillData(AListView: TVirtualStringTree; AContainer: TDataListContainer);
var
  i: Integer;
begin
  AListView.BeginUpdate;
  try
    AListView.Clear;
    if Assigned(AContainer.DataList) then
      for i := 0 to AContainer.DataList.Count - 1 do
        AListView.AddChild(nil, AContainer.DataList[i]);
  finally
    AListView.EndUpdate;
  end;
end;
Und:
Delphi-Quellcode:
procedure TForm6.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: string);
var
  CurrentEntry: TObject;
begin
  CurrentEntry := TObject(Sender.GetNodeData(Node)^);
  if CurrentEntry is TPerson then
...
Angehängte Dateien
Dateityp: 7z VirtualList.7z (55,5 KB, 8x aufgerufen)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat