当选项卡绘制为按钮时,显示区域周围不会绘制边框,因此设置Style
财产给tsButtons
or tsFlatButtons
。 (对于非 VCL 程序员,这相当于包含tcs_Buttons http://msdn.microsoft.com/en-us/library/bb760549.aspx选项卡控件上的窗口样式。)
另一种方法是使用TNotebook
。它可以容纳页面,但根本不进行任何绘画。您必须自己提供选项卡,例如将选项卡控件的高度设置为等于选项卡的高度,或者使用TTabSet
. (TTabSet
在 Delphi 2005 中可用;我不确定 Delphi 7。)
关于您找到的代码,如果您指出为什么它不编译,或者您提供了找到它的位置的链接,那将会很有帮助,因为我认为编译错误是因为它引用了自定义类的字段或属性而不是库存的。您可以尝试将以下内容放入您自己的代码中,而无需编写自定义控件。
在您的文件中做出两个新声明form像这样:
FOldTabProc: TWndMethod;
procedure TabWndProc(var Msg: TMessage);
在表格的OnCreate
事件处理程序,将该方法分配给页面控件的WindowProc
财产:
FOldTabProc := PageControl1.WindowProc;
PageControl1.WindowProc := TabWndProc;
现在实现该方法并处理tcm_AdjustRect
信息:
procedure TForm1.TabWndProc(var Msg: TMessage);
begin
FOldTabProc(Msg);
if Msg.Msg = tcm_AdjustRect then begin
case PageControl1.TabPosition of
tpTop: begin
PRect(Msg.LParam)^.Left := 0;
PRect(Msg.LParam)^.Right := PageControl1.ClientWidth;
Dec(PRect(Msg.LParam)^.Top, 4);
PRect(Msg.LParam)^.Bottom := PageControl1.ClientHeight;
end;
end;
end;
end;
如果您需要的话,您可以填写其他三种情况。Tcm_AdjustRect
是在中声明的消息标识符CommCtrl单元。如果您在该单元中没有该消息,请自行声明;它的值为 4904。
我怀疑这并不能阻止控件绘制其边界。相反,它会导致所包含的TTabSheet
变大一点并掩盖边界。