With the release of Delphi 2007 we’ve made it really simple to theme VCL applications using a checkbox option. On the Project Options dialog, on the Application page you’ll now see the “Enable runtime themes” checkbox which makes the necessary modifications to the projects (.res) resource file to ensure that your application is themed. By default, this option is checked for new Delphi VCL application and as I’ve indicated previously it controls how the designer renders your controls at design time.
Additionally, it’s no longer necessary to include either the TXPManifest component nor the XPMan unit (which is basically what dropping the TXPManifest component did) in your application. In fact, this method of theming your application will likely be deprecated in a future release of Delphi.
Be aware, theming your application may not be a quick and simple operation depending on the use of custom components that either you’ve written or are using. Not all components behave properly when themed so be sure to test your applications if you decide to check this option. You should also be aware of the performance impact that themes have on applications and test accordingly.
[UPDATED: Mar 21, 2007] Clarify that this option is check by default for new VCL applications. For existing applications you’ll need to set this manually. Add information about the resource that’s added to the .res file.
The resource that’s added to is called a “Manifest Resource” which you can learn more about here. Below is a copy of the manifest resource added to a new VCL project which, btw I highlighted using my online syntax highlighter.
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 3 <assemblyIdentity 4 type="win32" 5 name="CodeGear RAD Studio" 6 version="11.0.2597.23844" 7 processorArchitecture="*"/> 8 <dependency> 9 <dependentAssembly> 10 <assemblyIdentity 11 type="win32" 12 name="Microsoft.Windows.Common-Controls" 13 version="22.214.171.124" 14 publicKeyToken="6595b64144ccf1df" 15 language="*" 16 processorArchitecture="*"/> 17 </dependentAssembly> 18 </dependency> 19 </assembly>