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
    1. Ändern Sie die Grafik im Ordner (für meine eigenen Zwecke)
    2. Iterate entlang aller TImageLists in der Anwendung
    3. Ä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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top