var
Form1: TForm1;
deleted: Boolean;
Curpageindex: integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
WndProcPtr := MakeObjectInstance(WndMethod);
OldWndProc := Pointer(SetWindowLong(pagecontrol1.Handle, GWL_WNDPROC,
Integer(WndProcPtr)));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetWindowLong(pagecontrol1.Handle, GWL_WNDPROC, Longint(OldWndProc));
FreeObjectInstance(WndProcPtr);
end;
procedure TForm1.WndMethod(var Msg: TMessage);
begin
if Msg.Msg = 4872 then
begin
deleted:=True;
Curpageindex:=pagecontrol1.ActivePageIndex ;
end
else if Msg.Msg =4876 then
begin
if (deleted) and (Msg.WParam = Curpageindex+1 ) then
begin
Msg.WParam := CurPageindex;
deleted:=False;
end;
end;
with Msg do
Result := CallWindowProc(OldWndProc, Application.Handle, Msg, wParam,
lParam);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
pagecontrol1.Pages[3].PageControl := nil;
end;