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?