【发布时间】:2022-06-20 09:39:36
【问题描述】:
我正在使用开箱即用的“Charcoal Dark Slate”样式,并且遇到TCategoryPanelGroup 不刷新其类别面板的问题。
在此设置中,所有类别面板都已展开。
每个面板都有一个控件,一个带有几个子控件的TFrame。 TFrame 的 Align 属性设置为 alClient。
如果我折叠中间那个,下面的每个面板都不会重绘所有控件。我必须将鼠标移到它们上方才能重新绘制它们。如果我折叠第一个面板,面板 2 和 3 不会重绘等...(基本上所有面板都向上移动)
我已经尝试Invalidate()、Repaint() 和Refresh() 和TCategoryPanelGroup 上的折叠事件OnCollapse。我也绝望地尝试过Invalidate()、Repaint()和Refresh()面板本身。没有任何帮助。
我注意到所有面板都在调整大小时重新绘制。我现在的解决方法是让OnCollapse 和OnExpand 事件处理程序快速调整TCategoryPanelGroup 控件的大小。
void __fastcall TGraph_Form::CategoryPanelCollapse(TObject *Sender) {
TCategoryPanel *p = reinterpret_cast<TCategoryPanel*>(Sender);
TCategoryPanelGroup *g = reinterpret_cast<TCategoryPanelGroup*>(p->PanelGroup);
// Fix style bug on collapse events
// Force a resize to redraw all panels
g->Width++;
g->Width--;
}
调整TCategoryPanelGroup 的Height 属性不会强制所有面板重绘,它必须是Width 属性。
我在这里遗漏了什么还是这确实是另一个 VCL 样式错误?
【问题讨论】:
标签: themes vcl vcl-styles c++builder-10.4-sydney