2009-06-25 6 views
1

In Delphi 2007 werden Bilder zur Entwurfszeit in eine TImageList geladen. Dies führt folgendes Problem:Erstellen Sie TImageList, indem Sie nur Pfade angeben

  • Ich habe einen Ordner, um die Grafiken enthält, die ich in meiner Anwendung bin mit
  • Immer, 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, kompilieren Skript, ...) auf die Schritte 2 und 3 automatisch durchzuführen, das heißt, geben Sie nur Pfade von Grafiken zur Design-Zeit, eine Abhängigkeit von den tatsächlichen Grafikdateien erstellen?

Antwort

2

Sie könnten einen Nachkommen von TImageList erstellen und diese Art von Logik hinzufügen.

Da Komponenten, um Bilder in einem TImageList Bezug zu tun, dass durch den Index, wäre es am einfachsten, Ihre Nachkommen zu haben eine ImagePaths Eigenschaft vom Typ TStrings zu haben, die wie folgt formatiert ist:

#=Filename 

Und vielleicht ein hinzufügen Eigenschaft BasePath vom Typ string.

Dann nach dem Laden dieser Komponente könnte es automatisch diese Bilder im Speicher neu laden.

Sie könnten sogar einen Design-Zeit-Experten machen, der die Bilder in den Designer lädt.

--jeroen

+0

Daran habe ich gedacht. Ich habe irgendwie gehofft, dass jemand das schon getan hat (faul wie ich ...), da ich nicht wirklich ein Experte für die VCL bin. – Martijn

+0

Ich weiß nicht, dass irgendjemand das schon getan hat. Du könntest der Erste sein! ;-) –

+0

Habe jetzt nicht wirklich Zeit dafür, aber es klingt wie ein schönes Projekt für die Zukunft. – Martijn

1

Klassen sind nie vollständig compiletime. Entwurfszeitklassen werden auch aus Ressourcen gestreamt.

+0

OK, vielleicht war ich zu "zur Kompilierzeit" zu streng. Ich habe die Frage bearbeitet. – Martijn

0

lade ich die Bilder in die TImagelist zur Laufzeit. Aus diesem Grund weise ich zur Entwurfszeit keine Bilder zu. Sie werden alle als Ressource zur exe hinzugefügt und ich lade sie zur Laufzeit von dort. Dies bedeutet auch, dass die Bilder geändert werden können, ohne die exe neu zu kompilieren.

Verwandte Themen