Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#12

AW: Massive Performanceprobleme mit TJvImageComboBox

  Alt 9. Sep 2019, 11:08
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;

Geändert von Schokohase ( 9. Sep 2019 um 11:13 Uhr)
  Mit Zitat antworten Zitat