Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschiedliche DFMs zur Design-/Laufzeit (https://www.delphipraxis.net/133109-unterschiedliche-dfms-zur-design-laufzeit.html)

flone 25. Apr 2009 20:00


Unterschiedliche DFMs zur Design-/Laufzeit
 
Hallo,

ist es mit Delphi 2007 möglich, dass beim Compilieren ein anderes DFM als zur Designzeit verwendet wird?
Eine Möglichkeit wäre es, das PAS mittels eines Scripts als Pre-Build Ereignis zu verändern.
Aber geht das auch einfacher (Compiler Direktiven, etc.)?

Danke+Gruß
Flo

himitsu 25. Apr 2009 20:20

Re: Unterschiedliche DFMs zur Design-/Laufzeit
 
wäre erstmal die Frage, des "wozu?" man sowas überhaupt braucht?

und wenn die PAS/DFM grad im Delphi geladen ist, ist es nicht so leicht möglich da über 'nen "billiges" Pre-Build-Ereignis da was ändern zu wollen.

Da müßte man wohl schon schwerere Geschütze auffahren, wie IDE-Experten und Co.

flone 25. Apr 2009 20:29

Re: Unterschiedliche DFMs zur Design-/Laufzeit
 
Ich will in D2007 ImageListen mit ARGB32 Bitmaps füttern.
Klappt soweit ganz gut - ich habe alle Bitmaps als RGB24 in der IL und lasse beim Pre-Build die Bitmap = {..} Blöcke aus dem DFM rausschneiden und speichere es unter {UnitName}Build.dfm.
Dann setze ich im FormCreate das IL Format auf 32 und lade die Icons aus einer Resource mittels ReadComponentRes.
Klappt soweit perfekt, nur dass ich mit {$R *.dfm} das Problem habe, dass das normale DFM natürlich auch mit reincompiliert wird.
Mit {$R {UnitName}Build.dfm} klappts zwar, aber die IDE hat beim nächsten Laden natürlich Probleme...
Mein Ansatz wäre nun gewesen, als Pre-Build das {$R *.dfm} durch {$R {UnitName}Build.dfm} zu ersetzen und das beim Post-Build wieder rückgängig zu machen - eine elegantere Lösung wäre mir aber lieber...

Edit:
Hab grad festgestellt, dass mein Ansatz wohl so nicht funktioniert, weil Delphi dann meckert :(

Flocke 25. Apr 2009 20:50

Re: Unterschiedliche DFMs zur Design-/Laufzeit
 
Geht's vielleicht so?
Delphi-Quellcode:
{$IFDEF RELEASE}
{$R <Unitname>Build.dfm}
{$ELSE}
{$R *.dfm}
{$ENDIF}

flone 25. Apr 2009 21:40

Re: Unterschiedliche DFMs zur Design-/Laufzeit
 
@Flocke:
THX! Da hätte ich auch selbst draufkommen müssen :oops:
Mit einem {$DEFINE RELEASE} klappt das wies soll.
Wie kann ich das auch ohne ein DEFINE lösen?

Edit:
habs mittlerweile rausgefunden ;)
1000 Dank nochmal :thumb:

Edit2:
Leider hab ich beim erneuten öffnen festgestellt, dass das Flag wohl auch schon zur Designzeit greift :(
Bin also gerne für weitere Vorschläge offen!

Flocke 26. Apr 2009 10:05

Re: Unterschiedliche DFMs zur Design-/Laufzeit
 
Zitat:

Zitat von flone
Leider hab ich beim erneuten öffnen festgestellt, dass das Flag wohl auch schon zur Designzeit greift :(
Bin also gerne für weitere Vorschläge offen!

Da du von Build-Events benutzt, hast du wohl Delphi 2007 oder höher.

Du musst sicherstellen, dass du (vor dem Öffnen des Formulars) eine Build-Konfiguration als aktiv eingestellt hast, in der das Symbol RELEASE nicht definiert ist (also z.B. die Debug-Konfiguration). Das Symbol RELEASE habe ich vorgeschlagen, weil es ab D2007 in der Release-Konfiguration voreingestellt ist - du kannst natürlich irgendein anderes nehmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz