如何在组合框中列出所有可用的 VCL 样式,并在组合框更改事件中应用该样式C++生成器?

How can I list all the available VCL styles in a combo box and in the ComboBoxChange event, apply that style in C++ Builder?

本文关键字:样式 组合 应用 事件 C++ VCL      更新时间:2023-10-16

我目前正在尝试在我的应用程序中添加一个功能,用户可以在其中选择VCL样式到那里的偏好。我可以直接手动将所有样式添加到组合框中,但我相信有一种更简单的方法。

创建一个新的 C++Builder VCL 应用程序。在项目中 |选项 |应用 |外观菜单选择一些自定义样式名称。

然后将按钮和组合框组件添加到C++ VCL 窗体。 对于 Button 的 onlick 和 ComboBox 的 Change 事件,请使用以下代码。您还需要将 #include 放在表单:D源代码顶部附近 编译并运行,单击该按钮以查看使用您在项目选项中选择的外观样式填充的组合框。然后从组合框中选择一种样式以更改应用的样式。

我已经用RAD Studio 10.4 Sydney测试了这段代码。应该适用于任何最新版本的 C++Builder。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ComboBox1->Items->BeginUpdate();
try
{
ComboBox1->Items->Clear();
DynamicArray<String> styleNames = Vcl::Themes::TStyleManager::StyleNames;
for(int i = 0; i < styleNames.Length; ++i)
{
String styleName = styleNames[i];
ComboBox1->Items->Add(styleName);
}
}
__finally
{
ComboBox1->Items->EndUpdate();
}
}
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
// set the style for the selected combobox item
Vcl::Themes::TStyleManager::TrySetStyle(ComboBox1->Items->Strings[ComboBox1->ItemIndex],false);
}