我正在使用开箱即用的“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--;
}
调整Height
属性TCategoryPanelGroup
不会强制所有面板重绘,它必须是Width
属性。
我在这里错过了什么还是这确实是另一个 VCL 风格的错误?