首页 > 解决方案 > 查找来电者表单名称

问题描述

我创建了一个自定义表单,用于重新启动一个对话框。然后我在一个特殊的单元中重载了MessageDlg函数来调用这个表单。太好了,它的工作正常。当我调用表单时,它显示为模态,在这个模态中我需要调用者表单名称。

示例:FormA 调用重载 MessageDlg 的单元 U_Functions。然后 U_Functions 调用 FormDLG 并显示出来。在 FormDLG 中,我执行函数“GetParentFormName”并返回“FormA”。

我已经尝试过 GetForegroundWindow,但它返回与 Self 相同的东西。Self.Parent 为空。如何获取模态调用者的参考(TForm)?

流程示例

甲型:

procedure TFormA.Button1Click(Sender: TObject);
begin
   MessageDlg('Call Dialog', mtWarning, [mbOK], 0);
end;

U_Functions

function MessageDlg(Msg: String; Icone: TMsgDlgType; Botoes: TMsgDlgButtons): Integer; overload;
begin
  Result := FormDialog.fn_ShowMessage(msg, Icone, Botoes);
end;

窗体对话框

function FormDialog.fn_ShowMessage(Msg: String; Icone: TMsgDlgType; Botoes: TMsgDlgButtons): Integer;
begin
   // Get FormA's name
end;

标签: delphi

解决方案


Remy Lebeau 的方法 (Screen.ActiveForm) 完全符合我的要求。非常感谢您的参与。

由于有一个中间单元,它收集调用者姓名,并通过参数发送到第三种形式(对话框)。


推荐阅读