2017-04-18 47 views
1

我有一个带有pagecontrol的mainform(frmMain)。页面控件在启动时由几种形式填充,让我们说Form1,Form2和Form3确定哪个表单在活动页面中,delphi

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; 

这很好。 当我然后改变活动页面时,我想要在活动页面对应的窗体上调用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

回答

1

我找到了解决方案:

with pagecontrol1 do 
begin 
    with tform(activepage.controls[0]) do 
    if assigned(onactivate) then 
    onactivate(self); 
end; 
相关问题