查找来电者姓名

时间:2019-01-18 18:06:56

标签: delphi

我创建了一个自定义表单,以重新显示对话框。然后,我在特殊单元中重载了MessageDlg函数以调用此表单。很好,工作正常。 当我调用表单时,它显示为模式,在此模式内,我需要调用者表单名称。

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

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

流程示例

FormA:

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;

FormDialog

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

1 个答案:

答案 0 :(得分:0)

雷米·勒博(Remy Lebeau)的方法(Screen.ActiveForm)完全满足了我的期望。非常感谢您的宝贵时间。

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