问题描述
任何人都有使用样式资源的经验。我正在开发一个为其创建自定义样式的程序。我们将其另存为.style和.vsf。因为我们不希望用户看到/更改程序的样式,所以我们希望将其包括在资源文件(.res)中。这将按照下一个链接中的说明进行:Customizing and Creating VCL Styles之后创建的文件(已测试带有.style和.vsf的文件)作为RC数据放置在Resourcefile中。 多数民众赞成在准备,现在什么都不起作用。 (tWinMain)
TStyleManager::SetStyle(TStyleManager::LoadFromresource((unsigned int)HInstance,"StyleName",RT_RCDATA));
这也不起作用:
TStyleManager::LoadFromresource((unsigned int)HInstance,RT_RCDATA);
TStyleManager::SetStyle("StyleName");
也不起作用
TStyleManager_TStyleServicesHandle MyStyle;
MyStyle = TStyleManager::LoadFromresource((unsigned int)HInstance,RT_RCDATA);
TStyleManager::SetStyle(MyStyle);
从文件加载相同样式的工作原理:
TStyleManager::LoadFromFile(stylePath + "StyleName.vsf");
TStyleManager::SetStyle("StyleName");
解决方法
我在Delphi(DX10.3)中遇到了同样的问题,以下内容对我有用
与“ TStyleManager :: LoadFromResource”基本相同,但未指定可选参数“ RT_RCDATA”。
MyStyle = TStyleManager::LoadFromResource((unsigned int)HInstance,"StyleName");
TStyleManager::SetStyle(MyStyle);
但是,资源类型“ VCLSTYLE”对于正确加载样式是必需的。在IDE中添加资源时,使用[项目]> [资源和图片...],您只能在对话框中指定RCDATA,这很不好。但是您可以直接使用键盘手动输入资源类型为“ VCLSTYLE”。 IDE会记住此设置,现在资源可以作为正确的类型使用。如前所述,它可以与Delphi 10.3一起使用,而对于Builder,则只需一次尝试即可。
Resource-type manual input in IDE dialog
最诚挚的问候,马蒂亚斯