如何在组合框和 ComboBoxChange 事件中列出所有可用的 VCL 样式,然后在 C++ Builder 中应用该样式?

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

我目前正在尝试在我的应用程序中添加一项功能,用户可以根据自己的喜好 select VCL 样式。我可以直接手动将所有样式添加到 ComboBox 中,但我确信有更简单的方法。

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

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

我已经使用 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);
}