Когда вкладки отображаются в виде кнопок, вокруг области отображения не отображается граница, поэтому установите для свойства Style
значение tsButtons
или tsFlatButtons
. (Для программистов, не являющихся VCL, это эквивалентно включению стиля окна tcs_Buttons
в элемент управления с вкладками.)
Альтернативой является использование TNotebook
. Он держит страницы, но не рисует вообще. Вы должны предоставить вкладки самостоятельно, например, установив высоту элемента управления вкладками равной высоте вкладок, или используя TTabSet
. (TTabSet
доступен в Delphi 2005; я не уверен насчет Delphi 7.)
Что касается кода, который вы нашли, было бы полезно, если бы вы указали, почему он не компилируется, или если вы дали ссылку на то, где вы его нашли, поскольку я предполагаю, что ошибка компиляции была вызвана тем, что она ссылается на поля или свойства пользовательский класс, а не стандартный. Вот что вы можете попытаться поместить в свой собственный код без необходимости написания пользовательского элемента управления.
Сделайте две новые декларации в вашей форме следующим образом:
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
становиться немного больше и покрывать границы.