Einzelnen Beitrag anzeigen

Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#12

Re: TListView füllen dauert lange - Geht es auch schneller?

  Alt 24. Apr 2007, 15:52
Zitat von uwewo:
Versuchs mal hiermit, beschleunigt ungemein

Delphi-Quellcode:
ListView1.Items.BeginUpdate;
//hier die Werte hinzufügen
ListView1.Items.EndUpdate;
Das bringt leider keine Besserung...



Zitat von CCRDude:
Infos private in der Form, dann virtuell, wie ich schon sagte:

Delphi-Quellcode:
MyListView.OwnerData := true;
MyListView.Items.Count = Length(Infos);

procedure TMyDlg.MyListViewData(Item: TListItem);
begin
   if Item.Index>=Length(Infos)
    then Exit;
   Item.Caption := Infos[Item.Index].str1;
   Item.SubItems.Add(Infos[Item.Index].str2);
   if (Infos[Item.Index].num=mnOne) then begin
      Item.SubItems.Add('One');
      Item.Checked := true;
   end else begin
      Item.SubItems.Add('Two');
      Item.Checked := false;
    end;
end;
Dadurch wird Infos nur noch dann verarbeitet, wenn die GUI die Anzeige verlangt (bzw. Du Funktionen wie sortieren etc. aufrufen würdest).

(PS: VirtualStringTree ist da doch schon eher Overkill, virtuell können auch normale Listen )
Das funktioniert prima, der Dialog öffnet sich nun ohne Verzögerung. Allerdings werden die Checkboxen nicht mehr gezeichnet. Gibt es dafür auch noch einen Trick?
  Mit Zitat antworten Zitat