При взгляде на источник 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, поскольку это определяет пространство, доступное для того, что вы хотите нарисовать под заголовком в свернутом состоянии:
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;
Снимок экрана: