Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#15

AW: TImageList-Alternative? Resource-Datei? Performance?

  Alt 16. Sep 2017, 03:19
Wie wäre es denn mit 'nem Nachfahren von TImageList?

Ein zusätzliches Attribut Names vom Typ TStrings, in das die Namen der Bilder kommen, in der Reihenfolge, in der sie in der Imageliste stecken.

Dann noch 'ne Methode GetImageIndexByName (oder so), die per IndexOf in den Strings nach dem Namen sucht und, durch die identische Sortierung, dann den passenden ImageIndex liefert.

Für die Methoden Add, Insert ... der ImageList könnte man Versionen schreiben, die zusätzlich auch noch den Namen als Parameter annehmen und in den Strings speichern.

Sowas in der Art?
Delphi-Quellcode:
Type
  TMyImageList = class(TImageList)
    fNames : TStrings;
  public
    { Public-Deklarationen }
    constructor Create(aOwner : TComponent); override;
    destructor Destroy; override;
    property Names : TStrings read fNames;
  end;
  
constructor tMyImageList.Create(aOwner : TComponent);
begin
  inherited;
  fNames := TStringList.Create;
end;

destructor tMyImageList.Destroy;
begin
  fNames.Free;
  inherited;
end;

function tMyImageList.GetImageIndexByName(AName : String) : Integer;
begin
  Result := fNames.IndexOf(AName);
end;

end.

...
IrgendeineKomponenteMit.ImageIndex := ImageList.GetImageIndexByName('NameDesBildes');
Wenn man nicht den ImageIndex haben will, sondern direkt das Bild, dann schreibt man sich noch 'ne Methode GetImageByName, die analog zum ImageIndex halt das Bild liefert.

Der Aufwand dürfte insgesamt garnichtmal so hoch sein.
  Mit Zitat antworten Zitat