Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wahlweise Resource einbinden / Abfrage mit if then else (https://www.delphipraxis.net/24963-wahlweise-resource-einbinden-abfrage-mit-if-then-else.html)

TypusMensch 29. Jun 2004 09:01


Wahlweise Resource einbinden / Abfrage mit if then else
 
Ich nochmal:
Habe gerade den tollen Code gefunden, wo man alle VCL-Komp. in XP-Style darstellen kann.

Ich füge dafür halt einfach die Resource ein:
Delphi-Quellcode:
{$R DESIGN.RES}
Jetzt möchte ich aber das der Nutzer selber entscheiden darf, ob diese geladen werden darf oder nicht. Ich hatte mir das so gedacht:
Delphi-Quellcode:
if MessageDlg('XP Style?',mtConfirmation, [mbYes,mbNo],0) = mrYes then {$R DESIGN.RES}
Is aber leider nicht so. Er lädt sie in jedem Fall. Was kann ich dagegen tun? Wie kann ich das realisieren???

ThX im vorraus.

Muetze1 29. Jun 2004 09:07

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Moin!

Gute Idee, aber ein grundsätzliches Problem:

Die {$x } sind Compiler Anweisungen - das bedeutet der Compiler wertet diese beim compilieren aus und verhält sich entsprechend der Option - und der Compiler interpretiert keinen Code. Mit anderen Worten: Dem Compiler ist die IF Anweisung egal - darum kümmert er sich nicht, wenn er die Resource einbindet und umgekehrt: Wenn die IF Anweisung ausgeführt wird, dann ist die Resource schon in der EXE enthalten, da der Compiler schon fertig.

Ausserdem, das was du mit der RES Datei da in deine EXE hinzufügst wird direkt von Windows XP ausgelesen und beim Start deines Programmes bekommt dieses eine andere DLL untergeschoben, die dann das XP Aussehen durchdrückt...

MfG
Muetze1

TypusMensch 29. Jun 2004 09:09

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
also gibt es keine möglichkeit??? das is ja mies... :cry:

TypusMensch 29. Jun 2004 09:22

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
gibt es keine abfrage die der compiler versteht? compilerabfragen o.ä.???

Muetze1 29. Jun 2004 09:26

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Moin!

Doch, auch der Compiler (eigentlich wäre es bei C z.B. der Präprozessor der das interpretiert/verarbeitet) kennt IF Abfragen:

Delphi-Quellcode:
{$IFDEF WIN32}
Code
{$ENDIF}
Die Zeile Code wird nur compiliert (also kommt nur in die EXE), wenn die EXE auf WIN32 bzw. für WIN32 compiliert wird. Aber du kannst da keinen MessageDialog einbinden. Du solltest lieber in die Richtung suchen die RES Datei einzubinden und schauen ob die WinAPI einen Möglichkeit bietet für dein Programm den Style auszuschalten (was ich nicht glaube, da die DLL beim starten des Programms dir untergeschoben wird von Windows und er nach dem Laden schlecht die DLL entfernen, eine neue Laden und die Verbindungen zu allen Objekten wiederherstellen kann).

MfG
Muetze1

Vjay 29. Jun 2004 09:31

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Mh zur Laufzeit gibt es nur eine sehr komplizierte Lösung und zwar müsstest du die Ressourcen des eigenen Programms editieren, in etwa sieht das so aus:

Programmstart
Abfrage
umbenennen der eigenen exe
kopieren der umbenannten datei auf die exe
umeditieren der ressourcen (rein/raus)
start der exe (mit parametern)
selbst beenden
gestartete exe muss umbenannte datei löschen

Ob das lohnt? ;)

Steve 29. Jun 2004 09:36

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Du kannst das auch (unschön) so lösen, dass die Ressource nicht ins Programm eingebunden wird, sondern der XP-Style als ".manifest"-Datei mitgeliefert wird. (Programm: beispiel.exe --> XP-Stil: beispiel.exe.manifest) Was in der manifest-Datei stehen muss, dürfte in der OH zu finden sein.
Und die IF-Abfrage bennent dann die Datei halt um oder löscht/erzeugt sie - jeweils nach Wunsch des Benutzers.
Auch nicht die sauberste Lösung, aber einfacher als an der exe selber rumzuschrauben ;)

Gruß
Stephan

edit: siehe auch "XP-Style"

Muetze1 29. Jun 2004 09:41

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Moin!

Damit er aber die Manifest Datei oder die Resourcen bearbeiten kann, muss ein Code laufen - also die EXE selber. Und wenn die läuft, dann ist der Zeitpunkt wo Windows die Manifestdatei auswerten (bzw. das Manifest in der EXE) schon vorbei.

MfG
Muetze1

Steve 29. Jun 2004 09:42

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Dann muss man nach dem Ändern der Einstellungen (und umbenennen/löschen...) halt das Prog neu starten..
Oder reicht das nicht?

Stephan

TypusMensch 29. Jun 2004 09:43

Re: Wahlweise Resource einbinden / Abfrage mit if then else
 
Ja is doch mal ganz einfach!!! Danke für die Hilfe. Das klappt doch wunderbar! :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Seite 1 von 2  1 2      

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