gpt4 book ai didi

delphi - 如何删除类别面板控件中的或更改“水平分隔符”?

转载 作者:行者123 更新时间:2023-12-03 19:11:07 25 4
gpt4 key购买 nike

我一直在Delphi 2010中使用“类别面板控件”。我已经能够修改颜色并使它们按我希望的方式工作。但是,每个面板标题之间都有一个银色的“水平分隔符”(我不知道该怎么称呼它)。

如何更改此“水平分隔符”的外观或将其一起删除?

最佳答案

查看T(Custom)CategoryPanel的源代码后会发现一个DrawCollapsedPanel方法。它无条件地绘制分隔符。从DrawHeader中调用DrawCollapsedPanel,唯一检查的条件是面板是否折叠。

但是,更重要的是,DrawCollapsedPanel是虚拟的,因此您可以创建自己的后代或使用拦截器类:

TCategoryPanel = class(ExtCtrls.TCategoryPanel)
protected
procedure DrawCollapsedPanel(ACanvas: TCanvas); override;
function GetCollapsedHeight: Integer; override;
end;


如果将其放在单独的单元中,则只需在ExtCtrls单元之后将其包括在想要具有自己行为的类别面板的任何位置即可。

取悦大卫:-)

procedure TCategoryPanel.DrawCollapsedPanel(ACanvas: TCanvas);
begin
// Don't call inherited, we do not want the default separator.
// And don't draw anything you don't want.
end;


并且我们还需要重写GetCollapsedHeight,因为它确定了要在折叠状态下在Header下绘制的内容的可用空间:

function TCategoryPanel.GetCollapsedHeight: Integer;
begin
// As we don't want anything under here,
// don't call inherited and just return the HeaderHeight.
// (Instead of HeaderHeight + 6;
Result := HeaderHeight;
end;


屏幕截图:

关于delphi - 如何删除类别面板控件中的或更改“水平分隔符”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8279822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com