2012-03-14 105 views
4

如何将Delphi XE2 VCL样式嵌入到dll中?应用程序 - 外观页面在DLL项目的项目设置中不可见。嵌入在DLL中的VCL样式?

我试着在$ R指令中包含的rc文件中定义它们,但是如果有更好的方法,我想知道。

RC-文件例如:

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" 

特别是有指定的完整路径XE2的安装文件夹是我想避免的。

+0

您可以使用“项目资源”对话框执行相同操作。此外,RC对相对路径感到满意。 – OnTheFly 2012-03-14 14:05:13

回答

7

您可以使用的另一个选项

1)使用资源对话框。

enter image description here

2)编辑您的DLL

下此键<PropertyGroup Condition="'$(Base)'!=''">

的dproj文件添加一个条目VCL_Custom_Styles对VCL风格

<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> 
+0

谢谢,之前从未注意到资源对话框。这两个建议都很好。 – 2012-03-14 21:15:05

+0

我添加了资源,它位于我的cbproj中: ResourceItem VCLSTYLE AMAKRITS 现在如何动态访问它?我尝试了TStyleManager :: SetStyle,但它引发了一个异常,该风格无法找到。我需要做其他事吗? – Bizmarck 2016-02-23 19:06:27

1

它为我们工作也(感谢罗德里戈)。只是一些细节

  • 不要指望找到资源类型组合框列表上的VCLSTYLE,你必须手动键入它。

  • 不要错过初始化DLL中的样式,我们将下一个代码添加到FormCreate事件中: TStyleManager.SetStyle('Carbon');

0

要正确访问到作为资源添加样式检查要添加到uses子句两个单元:Vcl.Themes,Vcl.Styles。