【问题标题】:TCategoryPanelGroup not repainting Panels on collapse when using styles使用样式时,TCategoryPanelGroup 不会在折叠时重新绘制面板
【发布时间】:2022-06-20 09:39:36
【问题描述】:

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

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

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

我已经尝试Invalidate()Repaint()Refresh()TCategoryPanelGroup 上的折叠事件OnCollapse。我也绝望地尝试过Invalidate()Repaint()Refresh()面板本身。没有任何帮助。

我注意到所有面板都在调整大小时重新绘制。我现在的解决方法是让OnCollapseOnExpand 事件处理程序快速调整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--;
}

调整TCategoryPanelGroupHeight 属性不会强制所有面板重绘,它必须是Width 属性。

我在这里遗漏了什么还是这确实是另一个 VCL 样式错误?

【问题讨论】:

    标签: themes vcl vcl-styles c++builder-10.4-sydney


    【解决方案1】:

    在 Delphi 11.1 上相同,在 10.3 上没有,所以可能是一个错误。您在展开/折叠时调整 tcategorypanel 大小的修复也适用于我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2012-06-09
      相关资源
      最近更新 更多