Вообще это хорошо описанно у Стива Тейксейра, Ксавье Пачеко - Delphi 5 Руководство разработчика, но смотри:
unit untCustomWindow;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TCustomWindow = class(TForm)
private
FAsChild : Boolean;
FTempParent : TWinControl;
protected
procedure CreateParams (var Params : TCreateParams); override;
procedure Loaded; override;
public
constructor Create (AOwner : TComponent;
AParent : TWinControl); reintroduce;
end;
implementation
constructor TCustomWindow.Create (AOwner : TComponent; AParent : TWinControl);
begin
FAsChild := true;
FTempParent := AParent;
inherited Create (AOwner);
end;
procedure TCustomWindow.CreateParams (var Params : TCreateParams);
begin
inherited;
if FAsChild then
Params.Style := Params.Style or WS_CHILD;
end;
procedure TCustomWindow.Loaded;
begin
inherited;
if FAsChild then begin
Align := alClient;
BorderStyle := bsNone;
BorderIcons := [];
Parent := FTempParent;
Position := poDefault;
end;
end;
end.
Включаем этот модуль в проект.
Теперь когда тебе нужно создать новую форму (для вкладки), ты выбираешь File-New-Other-Inheritable Items,
это в Delphi 2007, в старых, создаешь просто создаешь новую форму (например TMyWindow), и правиш:
1. в pas файле, TMyWindow = class(TForm) -->>> TMyWindow = class(TCustomWindow)
2. в dfm файле object MyWindow : TMyWindow ->>> inherited MyWindow : TMyWindow
Далее там где нужен PageControl, кидаем его на форму, создаем вкладки, и в OnCreate формы пишем
TMyWindow.Create(self, MyTabSheet);
ВСЕ!! Получаем форму встроенную в MyTabSheet, аналогично фрэйму, но без его глюков.