需要你的帮助。
是否可以删除TabSheet(~4px)的边框?我使用PageControl作为开关面板而不是框架,窗户等。我希望一切都会笔直。
非常感谢您的帮助!
答案 0 :(得分: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.
答案 1 :(得分:6)
如果您不介意使用第三方工具,那么最简单的解决方案可能是使用来自JVCL的TjvPageControl。它具有您正在寻找的ClientBorderWidth属性。
答案 2 :(得分:1)
如今,这就是答案。不需要任何代码破解
也许您使用了主题,如果没有,则应该使用该技术:
项目选项>应用程序>外观
将其中一项作为默认样式选中)
比:
导航您的vsf样式文件
(可能就在这里
“ C:\ Users \ Public \ Documents \ Embarcadero \ Studio [VERSION] \ Styles
现在在位图样式设计器中。.导航至:
对象>标签>框架>位图
答案 3 :(得分:0)
另一种方法是将TTabSet与TPageControl一起使用:在表单的onCreate事件中,放置此代码以隐藏选项卡。
procedure TMainForm.FormCreate(Sender: TObject);
var
I : Integer;
begin
for I := 0 to Pred(PageControl1.PageCount) do
PageControl1.Pages[I].TabVisible := False;
PageControl1.Style := tsFlatButtons;
PageControl1.ActivePageIndex := 0;
TabSet1.Style := tsModernPopout;
TabSet1.SelectedColor := clMoneyGreen;
TabSet1.UnselectedColor := clGradientActiveCaption;
TabSet1.SelectedColor := clGradientActiveCaption;
end;
procedure TMainForm.TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
PageControl1.ActivePageIndex := NewTab;
end;