1

我有一个带有页面控件的主窗体(frmMain)。页面控件在启动时由几个表单填充,比如 Form1、Form2 和 Form3

procedure TForm1.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
   ManualDock(frmMain.PageControl1);
   show;
end;

这很好用。然后当我更改activepage时,我希望在与activepage对应的表单上调用OnActivate方法,所以我尝试了这个;

procedure TfrmMain.PageControl1Change(Sender: TObject);
begin
  with pagecontrol1 do
  begin
     lbHeading.Caption := activepage.Caption;
     with tform(activepage) do        // <= This does 
     if assigned(onactivate) then     // <= not
     onactivate(self);                // <= work
  end;
end;

Activepage 是 TTabsheet 类型

4

1 回答 1

1

我找到了一个解决方案:

with pagecontrol1 do
begin
  with tform(activepage.controls[0]) do
  if assigned(onactivate) then
  onactivate(self);
end;
于 2017-04-18T14:56:21.700 回答