7
votes

How do I embed Delphi XE2 VCL-Styles in a dll? The Application - Appearance page is not visible in project settings for DLL-projects.

I tried defining them in a rc-file included with a $R directive which works but if there is a better way I'd like to know.

RC-file example:

GOLDENGRAPHITE VCLSTYLE "C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\Redist\styles\vcl\GoldenGraphite.vsf"
CARBON VCLSTYLE "C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\Redist\styles\vcl\Carbon.vsf"

In particular having to specify the full path to XE2-installation folder is something I want to avoid.

3
You could do the same using Project Resource dialog. Also, RC is happy with relative paths.OnTheFly

3 Answers

10
votes

Another options which you can use

1) Using the Resource dialog.

enter image description here

2) Editing the dproj file of your dll

under this key <PropertyGroup Condition="'$(Base)'!=''">

Add one Entry VCL_Custom_Styles for the vcl styles

<VCL_Custom_Styles>&quot;Amakrits|VCLSTYLE|$(PUBLIC)\Documents\RAD Studio\9.0\Styles\Amakrits.vsf&quot;;&quot;Amethyst Kamri|VCLSTYLE|$(PUBLIC)\Documents\RAD Studio\9.0\Styles\AmethystKamri.vsf&quot;;&quot;Aqua Graphite|VCLSTYLE|$(PUBLIC)\Documents\RAD Studio\9.0\Styles\AquaGraphite.vsf&quot;</VCL_Custom_Styles>
1
votes

It works for us also (thanks Rodrigo). Just a couple of details

  • Don't expect to find the VCLSTYLE on the list of the Resource Type Combo Box, you have to type it manually.

  • Don't miss to initialize the style in your DLL, we add the next code to the FormCreate event: TStyleManager.SetStyle('Carbon');

0
votes

To access correctly to the Style added as a resource check you are adding to the uses clause both units: Vcl.Themes, Vcl.Styles.