Delphi 嵌入在dll中的VCL样式?

Delphi 嵌入在dll中的VCL样式?,delphi,delphi-xe2,vcl-styles,Delphi,Delphi Xe2,Vcl Styles,如何在dll中嵌入Delphi XE2 VCL样式?应用程序外观页面在DLL项目的项目设置中不可见 我尝试在一个包含$R指令的rc文件中定义它们,该指令有效,但我想知道是否有更好的方法 RC文件示例: GOLDENGRAPHITE VCLSTYLE "C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\Redist\styles\vcl\GoldenGraphite.vsf" CARBON VCLSTYLE "C:\Program Files (x

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

我尝试在一个包含$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安装文件夹的完整路径。

您可以使用的另一个选项

1) 使用资源对话框

2) 编辑dll的dproj文件

在此键下

为VCL样式添加一个条目
VCL\u自定义\u样式

<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>
“Amakrits | VCLSTYLE |$(PUBLIC)\Documents\RAD Studio\9.0\style\Amakrits.vsf”;“Amethyst Kamri | vcstyle |$(公共)\Documents\RAD Studio\9.0\style\AmethystKamri.vsf”;“Aqua Graphite | VCLSTYLE |$(公共)\Documents\RAD Studio\9.0\Styles\AquaGraphite.vsf”
它也适用于我们(感谢罗德里戈)。只是一些细节

  • 不要期望在资源类型组合框的列表中找到VCLSTYLE,您必须手动键入它

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


要正确访问作为资源检查添加的样式,您需要将两个单位都添加到uses子句中:Vcl.Themes,Vcl.Styles。

您可以使用“项目资源”对话框执行相同操作。另外,RC对相对路径也很满意。谢谢,以前从未注意过资源对话框。这两个建议都很好。我已经添加了资源,它在我的cbproj中作为:ResourceItem VCLSTYLE AMAKRITS现在如何动态访问它?我尝试了TStyleManager::SetStyle,但它引发了一个异常,即找不到该样式。我还需要做什么吗?