Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Kann ich meine ListView beschleunigen (Icon laden dauert ewig)

  Alt 13. Nov 2018, 13:56
Niemals unsynchronisiert aus einem Thread heraus auf VCL-Controls zugreifen, das ist eine uralte Weisheit.
Delphi-Quellcode:
procedure TfrmMain.StartIcons();
begin
  TThread.CreateAnonymousThread(procedure ()
    var
      LIcon: TIcon;
      I: Integer;
      dummy: Word;
    begin
      dummy := 0;
      LIcon := TIcon.Create;
      LIcon.Transparent := True;
      try
        lvFiles.Update;
        FileIcons.BeginUpdate;
        for i := 0 to lvFiles.Items.Count -1 do
        begin
          begin
            LIcon.Handle := ExtractAssociatedIcon( hInstance, PWideChar( lvFiles.Items.Item[ i ].Caption ), dummy );
            LIcon.Transparent := True;
          end;
        TThread.Synchronize (TThread.CurrentThread, procedure ()
          begin
            lvFiles.Items.Item[ i ].ImageIndex := FileIcons.AddIcon( LIcon );
          end);
        DestroyIcon( LIcon.Handle );
        end;
      finally
        FileIcons.EndUpdate;
        LIcon.Free;
      end;
    end).Start;
end;
Danke, ich habe es auf diese Weise korrigiert aber das Problem besteht immer noch, ich finde meinen Fehler nicht.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat