确定activepage中的哪个表单,delphi

Posted

技术标签:

【中文标题】确定activepage中的哪个表单,delphi【英文标题】:Determine which form in activepage, delphi 【发布时间】:2017-04-18 14:54:05 【问题描述】:

我有一个带有页面控件的主窗体 (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 类型

【问题讨论】:

【参考方案1】:

我找到了解决办法:

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

【讨论】:

以上是关于确定activepage中的哪个表单,delphi的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 jQuery 表单插件中的活动提交按钮?

delphi提交表单

确定在 Django 表单提交中单击了哪个提交按钮

delphi中的showmessage函数是调用的哪个API函数

delphi 键盘值

Delphi 7 - 为表单中的嵌入式框架处理 MouseWheel 事件?