Robert Kennedy replied:

>Here's what I wrote about that component a few weeks ago.
>
>http://groups.google.com/group/comp.lang.pascal.delphi.misc/msg/6b7e3202fba4c7eb

Thanks Rob for the very concise explanation of what is going on with 
the XPManifest component. In the meantime, I looked at the source in 
the VCL and realized that I had to remove all references to xpman in 
the uses clause of any units which contained it.  That indeed removed 
the XP theme appearance under Vista.

XPManifest puts modified content of the file sample.manifest into the 
exe file. However, XP theme appearance, following the information in 
the Delphi Help, can also be generated by having a file which is 
called appname.exe.manifest which has the content of the 
sample.manifest in the app's directory, where appname is the name of 
the application.

Apparently,  Vista does not ignore the XP theme unlike Win2000, but 
it doesn't apply it's own Aero theme instead. Perhaps MS may remedy 
this in the final version of Vista, but I'm not counting on it. Or is 
there an AeroManifest component somewhere that I've not seen?

This led me to the idea of adding an appname.exe.manifest file in the 
installation program for appname.exe, and then when the program runs, 
I get the OS with GetOSVersionEx in FormCreate, and if XP (major 
version 5, minor version 1) is detected, I keep appname.exe.manifest. 
If Vista or another non-XP OS is detected, I change the name to 
something innocuous rather than delete it so that it can be changed 
back again if the installed files are run later under XP.

Unfortunately, the xml content in appname.exe.manifest is read before 
the main FormCreate, so the first time a program is run under Vista, 
it still has the XP theme error in the appearance of the buttons. On 
the next run, the file has been renamed and the xml doesn't run, so 
all is well. The same problem re-occurs in reverse if one returns to 
XP after having run under Vista without re-installation.

I can put all this detection and changing into a setup.dll run by the 
installation program since I use one which offers that ability, but 
it would be neater  if there is a way to do this in the app itself in 
order to avoid re-installation if one has a mult-boot machine.

Is there a way to do all this **before** the xml in 
appname.exe.manifest  runs and before FormCreate does something in 
order to avoid having to run the program twice to get the correct 
appearance under Vista or when returning to XP?

Irwin Scollar 

_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi

Reply via email to