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的调用,以及这些调用是阻塞的还是非阻塞的:
Platform | Without ACloseDialogProc | With ACloseDialogProc |
---|---|---|
Windows | 阻塞 (Blocking) | 阻塞 |
OS X | 阻塞 | 阻塞 |
iOS | 阻塞 | 非阻塞 |
Android | 非阻塞 |
TMsgDlgType :
- mtWarning, //警告用户潜在问题
- mtError, //将发生的错误通知用户
- mtInformation, //向用户提供信息。
- mtConfirmation, //请用户确认。
- mtCustom //以上都不是
TMsgDlgBtn类型对应 返回值:
TMsgDlgBtn Value | Corresponding 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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月简报