Delphi XE MessageDlg[1] 介绍与用法 -将窗体显示为模式对话框。

Delphi XE MessageDlg[1] 介绍与用法  - 将窗体显示为模式对话框。

1
uses FMX.Dialogs

原型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const AHelpContext: THelpContext): Integer;
begin
  Result := MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '');
end;
 
procedure MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const AHelpContext: THelpContext; const ACloseDialogProc: TInputCloseDialogProc);
begin
  MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '', ACloseDialogProc);
end;
 
procedure MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const AHelpContext: THelpContext; const ACloseDialogEvent: TInputCloseDialogEvent; const AContext: TObject);
begin
  MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '', ACloseDialogEvent, AContext);
end;
 
function MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const AHelpContext: THelpContext; const ADefaultButton: TMsgDlgBtn): Integer;
begin
  Result := MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '', ADefaultButton);
end;
 
procedure MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const AHelpContext: THelpContext; const ADefaultButton: TMsgDlgBtn;
const ACloseDialogProc: TInputCloseDialogProc);
begin
  MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '', ADefaultButton, ACloseDialogProc);
end;
 
procedure MessageDlg(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons;const AHelpContext: THelpContext; const ADefaultButton: TMsgDlgBtn;
const ACloseDialogEvent: TInputCloseDialogEvent; const AContext: TObject);
begin
  MessageDlgPosHelp(AMessage, ADialogType, AButtons, AHelpContext, -1, -1, '', ADefaultButton, ACloseDialogEvent, AContext);
end;

参数(TMsgDlgType 、TMsgDlgBtn、TMsgDlgType 

  • AMessage://表示对话框的文本消息
  • ADialogType: //表示对话框的类型 ,参照一下以下TMsgDlgType 类型说明
  • AButtons  //决定对话框的按钮,参照以下 TMsgDlgBtn 类型说明
  • AHelpContext  //指定此对话框在单击对话框的帮助按钮时将使用的帮助上下文ID。   注意:为了使“帮助”按钮显示在对话框上,请在对话框的“选项”属性中添加poShowHelp标志。
  • ADefaultButton  //确定显示对话框时处于焦点的按钮。有关按钮类型的列表,请参阅System.UITypes.TMsgDlgBtn。
  • ACloseDialogProc  //是在对话框关闭时MessageDlg执行的匿名方法。

返回值:

  MessageDlg返回用户选择的按钮的值。如果提供ACloseQueryProc参数,InputQuery会将所选按钮传递给ACloseQueryProc方法。

注意:“帮助”按钮不会返回值,因为它不会关闭对话框。 

如果对MessageDlg的调用不包含ACloseDialogProc参数,则该调用在所有平台上都被阻塞;也就是说,直到对话框关闭,MessageDlg才会返回。Android不支持这些阻塞调用,如果提供ACloseDialogProc参数,则只能在Android上使用MessageDlg。

包含ACloseDialogProc参数的对MessageDlg的调用在桌面平台上也会阻塞,但在移动平台上不会阻塞;也就是说,在移动平台上,在调用MessageDlg之后放置的任何代码都会在对话框关闭之前执行。如果需要在对话框关闭后执行代码,请使用MessageDlg的ACloseDialogProc参数定义运行该代码的匿名方法。

平台支持

下表总结了哪些平台支持哪些对MessageDlg的调用,以及这些调用是阻塞的还是非阻塞的:

PlatformWithout ACloseDialogProcWith ACloseDialogProc
Windows 阻塞 (Blocking) 阻塞
OS X 阻塞  阻塞
iOS 阻塞  非阻塞
Android   非阻塞 

 

TMsgDlgType :

  • mtWarning,  //警告用户潜在问题
  • mtError,  //将发生的错误通知用户
  • mtInformation,  //向用户提供信息。
  • mtConfirmation,  //请用户确认。
  • mtCustom  //以上都不是

TMsgDlgBtn类型对应 返回值:

 
TMsgDlgBtn ValueCorresponding Return Value

mbOK

mrOk

mbCancel

mrCancel

mbAbort

mrAbort

mbRetry

mrRetry

mbIgnore

mrIgnore

mbYes

mrYes

mbNo

mrNo

mbClose

mrClose

mbHelp

mrHelp

mbTryAgain

mrTryAgain

mbContinue

mrContinue

mbNone

mrNone

mbAll

mrAll

mbNoToAll

mrNoToAll

mbYesToAll

mrYesToAll 

 

MessageDlg 用法示例:

1
MessageDlg ('Error while connecting:'+#13+E.Message, TMsgDlgType.mtError, [TMsgDlgBtn.mbOk], 0);  //提示错误对话框,带ok按钮
1
2
3
4
5
6
7
if MessageDlg('欢迎来到[滔Roy]的博客.  现在退出吗?', TMsgDlgType.mtConfirmation,
                [TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo], 0, TMsgDlgBtn.mbYes) = mrYes then
  begin
    MessageDlg('正在退出[滔Roy]的博客园.', TMsgDlgType.mtInformation,
      [TMsgDlgBtn.mbOk], 0, TMsgDlgBtn.mbOk);
    Close;
  end;

  

 

 

 

创建时间:2020.06.01  更新时间:2020.06.04  2022.09.29

 

posted on   滔Roy  阅读(1137)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示