Erstellen TImageList nur die Angabe Pfade
-
22-07-2019 - |
Frage
In Delphi 2007, werden die Bilder in einem TImageList zur Entwurfszeit geladen. Dies führt folgendes Problem:
- Ich habe einen Ordner, um die Grafiken enthält, die ich in meiner Anwendung bin mit
- Wenn ich ändern wollen, sagen wir, das Symbol für ‚retten‘, muss ich
- Ändern Sie die Grafik im Ordner (für meine eigenen Zwecke)
- Iterate entlang aller TImageLists in der Anwendung
- Ändern Sie die Grafik in der TImageList
Gibt es eine Möglichkeit (Komponente, kompiliert Skript, ...), um Arbeitsschritte 2 und 3 automatisch, das heißt, geben Sie nur Pfade von Grafiken zur Design-Zeit, eine Abhängigkeit von den tatsächlichen Grafikdateien erstellen?
Lösung
Sie könnten einen Nachkommen von TImageList erstellen und diese Art von Logik dort hinzuzufügen.
Da die Komponenten, um Bilder in einem TImageList Bezug zu tun, dass durch den Index, wäre es am einfachsten, Ihre Nachkommen haben eine ImagePaths Eigenschaft vom Typ TStrings zu haben, die wie folgt formatiert ist:
#=Filename
Und vielleicht auch eine Eigenschaft BasePath vom Typ String hinzuzufügen.
Dann auf diese Komponente geladen, es könnte automagically diese Bilder im Speicher neu zu laden.
Sie könnten sogar ein Design-Time-Experten machen es, die die Bilder im Designer geladen wird.
- jeroen
Andere Tipps
Die Klassen sind nie vollständig compiletime. Entwurfszeit-Klassen werden auch von Ressourcen übertragen.
ich die Bilder in die TImagelist
zur Laufzeit laden. Aus diesem Grunde, ordne ich keine Bilder zur Entwurfszeit. Sie sind alle als Ressource in die exe hinzugefügt und ich sie von dort zur Laufzeit laden. Dies bedeutet auch, dass die Bilder ohne Neukompilierung die exe geändert werden kann.