如何在组合框和 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);
}
我目前正在尝试在我的应用程序中添加一项功能,用户可以根据自己的喜好 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);
}