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.