我创建了一个自定义表单,以重新显示对话框。然后,我在特殊单元中重载了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;
答案 0 :(得分:0)
雷米·勒博(Remy Lebeau)的方法(Screen.ActiveForm)完全满足了我的期望。非常感谢您的宝贵时间。
由于有一个中间单元,它收集了呼叫者的姓名,并通过参数发送给第三种形式(对话框)。