da ich mehrere Icon-Sets zur Auswahl mitliefern möchte, die erst zur Laufzeit geladen werden sollen - und die ggf. auch vom Anwender ergänzt werden können.
Letzteres stelle ich mir nur schwer zu implementieren vor. Wie sollen diese ergänzten Icons denn angesprochen werden? Das ginge dann allenfalls über den Index, aber der ist seit
ImageName eigentlich nur noch zweite Wahl.
Für den Anwender wäre es auch viel leichter eine neue Datei mit einem sprechenden Dateinamen an eine passende Stelle zu legen und diesen als Referenz zu verwenden. Das könnte man vermutlich leichter realisieren, als eine potenziell fehleranfällige Manipulation der Iconset-Dateien.
Außerdem, was machst du mit einer vom Anwender erweiterten Icon-Set-Datei, wenn du beim nächsten Release selbst neue Icons dazufügen willst?
Ich würde diesen One-File-Ansatz ohne zwingende Gründe eher nicht verfolgen. Mit
TImageCollection.Add(AName: String; const AFileName: String);
hat man auch einen einfachen Mechanismus mehrere unterschiedlich große Icons unter demselben Namen in die Collection einzulesen. Der ganze Aufwand beim Zusammensetzen der großen Images und das anschließende zerpflücken wär mir das nicht wert.