Das Entfernen und erneute Erzeugen von Instanzen ist immer schlecht für die Performance.
Warum verwendest du die bereits vorhandenen Einträge nicht wieder? Dann geht das auch wesentlich schneller.
Delphi-Quellcode:
procedure UpdateItems(const AItems: TJvImageItems; const AValues: TStrings);
var
itemIndex: Integer;
itemTemplate: TJvImageItem;
begin
AItems.BeginUpdate();
try
// zuviele Einträge -> löschen vom Ende
while AItems.Count > AValues.Count do
AItems.Delete(AItems.Count-1);
// zuwenig Einträge -> neue anfügen
while AItems.Count < AValues.Count do
AItems.Add;
// Template erstellen
itemTemplate := TJvImageItem.Create(AItems);
try
for itemIndex := 0 to AValues.Count -1 do
begin
// Template Werte setzen
itemTemplate.Text := AValues[itemIndex];
// Template zuweisen
AItems[itemIndex].Assign(itemTemplate);
end;
finally
FreeAndNil(itemTemplate);
end;
finally
AItems.EndUpdate();
end;
end;