我一直在使用Delphi 2010中的Category Panel Control。我已经能够修改颜色并让它们以我喜欢的方式工作。但是,每个面板标题之间都有一个银色的“水平分隔符”(我不知道还有什么叫它)。
如何更改此“水平分隔符”的外观或将其全部删除?
答案 0 :(得分:6)
看一下T(Custom)CategoryPanel的源代码,揭示了一个方法DrawCollapsedPanel。它无条件地绘制分隔符。 DrawCollapsedPanel是从DrawHeader调用的,唯一检查的条件是面板是否折叠。
更重要的是,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;
屏幕截图: