德尔福.删除PageControl的TabSheet边框

Mic*_*ael 12 delphi tabs border

需要你的帮助.

是否可以删除TabSheet(~4px)的边框?我使用PageControl作为开关面板而不是框架,窗户等.我希望一切都会是直的.

非常感谢您的帮助!

NGL*_*GLN 20

unit Unit1;

interface

uses
  ...,
  CommCtrl;

type
  TPageControl = class(ComCtrls.TPageControl)
  private
    procedure TCMAdjustRect(var Msg: TMessage); message TCM_ADJUSTRECT;
  end;

  TForm1 = class(TForm)
    ...
  end;

...

procedure TPageControl.TCMAdjustRect(var Msg: TMessage);
begin
  inherited;
  if Msg.WParam = 0 then
    InflateRect(PRect(Msg.LParam)^, 4, 4)
  else
    InflateRect(PRect(Msg.LParam)^, -4, -4);
end;

...

end.
Run Code Online (Sandbox Code Playgroud)

  • 使用这个解决方案,顶部仍然有几个空白像素,以完全删除那些空白:如果self.TabPosition = tpTop则开始PRect(Msg.LParam)^.左:= 0; PRect(Msg.LParam)^.右:= self.ClientWidth; Dec(PRect(Msg.LParam)^.Top,4); PRect(Msg.LParam)^.Bottom:= self.ClientHeight; 结束其他继承; (2认同)

Lin*_*nas 6

如果您不介意使用第三方工具,那么最简单的解决方案可能是使用JVCL的 TjvPageControl .它具有您正在寻找的ClientBorderWidth属性.