你可以覆盖对Custom TForm/Dialog的MessageDlg调用吗?

Chr*_*ase 5 delphi

我一直在使用类似的代码

MessageDlg('', mtWarning, [mbOK], 0);
Run Code Online (Sandbox Code Playgroud)

整个项目,(感谢GExperts消息对话工具:))我想知道是否有人知道一种方式覆盖调用并显示我自己的自定义表单.

我能想到的唯一方法就是制作一个类似的新形式

function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
  //show my own code here
end;
Run Code Online (Sandbox Code Playgroud)

并在Dialogs单元之前将它放在每个使用列表中,但是有一种保证的方法可以确保它使用我的代码而不是Dialogs单元代码.
我不喜欢将对话框单元复制到本地目录并对其进行更改的想法.

或者这是多少工作,我应该只使用我自己的函数调用并用我自己的所有MessageDlg替换.(这不会很有趣,我错误地使用了MessageDlg)

Jim*_*eth 5

顺便说一下,你想在uses子句中的Dialogs单元之后添加它.

在我看来,你有三个选择:

  1. Dialogs单元之后添加您自己的单元,该单元具有名为MessageDlg的方法并具有相同的签名以创建您自己的表单.
  2. 或者创建一个全新的方法或一组方法,使用您自己的表单创建特定的对话框.
  3. 使用DarkAxi0mMessageDlgMessageDlg执行全局搜索和替换,然后将DarkAxi0mDialogs单元添加到uses子句中.

第一个是有问题的,因为你可能会错过一个单元并仍然得到旧的MessageDlg.第二个需要更多的使用,但从长远来看提供了更好的灵活性.第三个可能是最简单的,也是最不利的.确保在进行替换之前进行备份,然后使用diff工具(如Beyond Compare)检查更改.