首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TFrame覆盖样式颜色

TFrame覆盖样式颜色
EN

Stack Overflow用户
提问于 2021-10-25 20:34:24
回答 1查看 86关注 0票数 2

我有一个带有彩色clSkyBlue的框架,它位于一个带有面板和颜色clSkyBlue的应用程序中。该程序使用TStyleManager,它将颜色设置为当前样式。( windows10,windows10深色等)问题是,除了保留clSkyBlue的框架之外,所有东西都有正确的颜色集。

如何强制框架遵循当前选定的样式?

代码语言:javascript
运行
复制
//in the main form code
void __fastcall TMainFormUnit::FormCreate(TObject *Sender)
{
...
  for (int i = 0; i < TStyleManager::StyleNames.Length; i++)
    cbxVclStyles->Items->Add(TStyleManager::StyleNames[i]);
    TStyleManager::TrySetStyle(TStyleManager::StyleNames[1]);
...
}

//---------------------------------------------------------------------------
void __fastcall TMainFormUnit::cbxVclStylesChange(TObject *Sender)
{
  TStyleManager::SetStyle(cbxVclStyles->Text);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 21:35:49

如果您需要您的TFrame在父组件更改时更改外观,请相应地设置其属性:

代码语言:javascript
运行
复制
ParentBackground = True
ParentColor = True

这还将其Color设置为clBtnFace

我还建议不要在FormCreate中使用C++事件。使用构造函数:

代码语言:javascript
运行
复制
__fastcall TMainFormUnit::TMainFormUnit(TComponent* Owner)
    : TForm(Owner)
{
    cbxVclStyles->Items->AddStrings(TStyleManager::StyleNames);
}
//---------------------------------------------------------------------------
void __fastcall TMainFormUnit::cbxVclStylesChange(TObject *Sender)
{
    TStyleManager::TrySetStyle(static_cast<TComboBox*>(Sender)->Text);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69714447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档