通过 MDI ParentForm 上的 TMenuItem 从另一个 MDI ChildForm 的 TButton 打开 MDI ChildForm 时出错

Error on opening an MDI ChildForm from another MDI ChildForm's TButton via TMenuItem on MDI ParentForm

我有 2 个 MDIChild 窗体和一个带有 TMainMenu 的 MDIParent 窗体。在 TMainMenu 中,我有以下 TMenuItem.OnClick 打开 ChildForm2 的过程:

procedure TfrmMain.miOpenChildForm2Click(Sender: TObject);
begin
  TfrmChildForm2.Create(self).Show;
end;

现在,我想通过下面的 TButton.OnClick 过程从 ChildForm1 访问上述过程:

procedure TfrmChildForm1.btnOpenChildForm2Click(Sender: TObject);
begin
  frmMain.miOpenChildForm2Click; // Error Here: E2035 Not enough actual parameters
End;

我在上面的第二个过程中遇到错误:

E2035 Not enough actual parameters

我不知道在哪里更正它。我尝试将“()”放在过程调用的末尾,但无济于事。

程序定义

procedure TfrmMain.miOpenChildForm2Click(Sender: TObject);

告诉您过程需要接收类型 TObject 的参数 Sender。使用 frmMain.miOpenChildForm2Click; 调用它不会传递该参数。该参数不是可选的。

Sender 旨在告诉您是什么触发了事件,以便在重要的情况下使用,例如当您对多个控件使用一个事件处理程序时。它允许您区分事件调用的来源。

您可以使用调用中点击的按钮或菜单项作为参数

frmMain.miOpenChildForm2Click(btnOpenChildForm2);

如果调用来自哪里并不重要,您可以传递 nil 而不是

frmMain.miOpenChildForm2Click(nil);

请注意:MDI 已被弃用至少十年,并且 Windows 至少在那么长时间内没有得到太多支持。现代应用程序不使用 MDI,新开发很可能也不应该包括它。