0

我正在使用开箱即用的“Charcoal Dark Slate”样式,并且在TCategoryPanelGroup不刷新其类别面板时遇到了问题。

在此设置中,所有类别面板都已展开。每个面板都有一个控件,一个TFrame带有几个子控件。将TFrameAlign属性设置为alClient

在此处输入图像描述

如果我折叠中间那个,下面的每个面板都不会重绘所有控件。我必须将鼠标移到它们上方才能重新绘制它们。如果我折叠第一个面板,则面板 2 和 3 不会重绘等...(基本上所有向上移动的面板)

在此处输入图像描述

我试过了,Invalidate()Repaint()崩溃事件。我也试过了,面板本身就绝望了。没有什么帮助。Refresh()TCategoryPanelGroupOnCollapseInvalidate()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 风格的错误?

4

0 回答 0