DELPHI中MessageBox的用法

news/2025/1/14 10:55:08/文章来源:https://www.cnblogs.com/zhou0811/p/18670370

MessageBox对话框 输入控件的 ImeName属性把输入法去掉就默认为英文输入了

 MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对框。
 1、函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
 hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
 Text:欲显示的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的返回值为整数,用于对话框按钮的识别。

引数:
1.Text:要显示的信息
2.Caption:信息窗口的标题文字
3.Flags:窗体标志(说明是何种类型的信息窗体)
3.1.可指定信息窗体上的图标
3.2.可指定信息窗体上出现的按钮
3.3.可指定预设Focus在哪一个按钮上
3.4.可指定是否Modal
3.5.其他

 2、类型常量
 对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
 (1)按钮组合常量
 MB_OK = $00000000;         //一个确定按钮
 MB_OKCANCEL = $00000001;      //一个确定按钮,一个取消按钮
 MB_ABORTRETRYIGNORE = $00000002;  //一个异常终止按钮,一个重试按钮,一个忽略按钮
 MB_YESNOCANCEL = $00000003;     //一个是按钮,一个否按钮,一个取消按钮
 MB_YESNO = $00000004;        //一个是按钮,一个否按钮
 MB_RETRYCANCEL = $00000005;     //一个重试按钮,一个取消按钮
 (2)缺省按钮常量
 MB_DEFBUTTON1 = $00000000;     //第一个按钮为缺省按钮
 MB_DEFBUTTON2 = $00000100;     //第二个按钮为缺省按钮
 MB_DEFBUTTON3 = $00000200;     //第三个按钮为缺省按钮
 MB_DEFBUTTON4 = $00000300;     //第四个按钮为缺省按钮
 (3)图标常量
 MB_ICONHAND = $00000010;        //“×”号图标
 MB_ICONQUESTION = $00000020;      //“?”号图标
 MB_ICONEXCLAMATION = $00000030;    //“!”号图标
 MB_ICONASTERISK = $00000040;      //“i”图标
 MB_USERICON = $00000080;        //用户图标
 MB_ICONWARNING = MB_ICONEXCLAMATION;  //“!”号图标
 MB_IConERROR = MB_ICONHAND;      //“×”号图标
 MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
 MB_ICONSTOP = MB_ICONHAND;       //“×”号图标
 (4)运行模式常量
 MB_APPLMODAL = $00000000;    //应用程序模式,在未结束对话框前也能切换到另一应用程序
 MB_SYSTEMMODAL = $00001000;   //系统模式,必须结束对话框后,才能做其他操作
 MB_TASKMODAL = $00002000;    //任务模式,在未结束对话框前也能切换到另一应用程序
 MB_HELP = $00004000;       //Help Button

指定下列标志中的一个来显示对话框的形态:标志的含义如下:
MB_APPLMODAL:在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但 是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失 效,但是弹出窗口不是这样。

如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。

MB_SYSTEMMODAL:除了消息框有WB_EX_TOPMOST类 型,MB_APPLMODAL和WS_EX_TOPMOST一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢 出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。
MB_TASKMODAL:如果参数hwnd为NULL,除了所有属于当前线程高层次的窗口足 失效的,MB_TASKMODALL和MB_ApPLMODAL一样。当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。但仍需要阻止到调用 应用程序甲其他窗口的输入而不是搁置其他线程。
另外,可以指定下列标志。

对于task而言,是modalform
一般来说,这跟MB_APPLMODAL是等效的,但是当应用程式中的所有
form都隐藏的时候,就必须使用这个,才能达到modal的目的

MB_DEFAULT_DESKTOP_ONLy:接收输入的当前桌面一定是一个缺省桌面。否则,函数调用失败。缺省桌面是一个在用户已经纪录且以后应用程序在此上面运行的桌面。

MB_HELP:把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。

MB_RIGHT:将讯息文字向右对齐,文本为右调整。

MB_RTLREADING:用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。

MB_SETFOREGROUND:消息框变为前景窗口。在内部系统为消息个调用SetForegrundWindow函数。

MB_TOPMOSI:将讯息视窗提至最前面,消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。

 3、函数返回值
 0            //对话框建立失败
 idOk = 1        //按确定按钮
 idCancel = 2      //按取消按钮
 idAbout = 3       //按异常终止按钮
 idRetry = 4       //按重试按钮
 idIgnore = 5      //按忽略按钮
 idYes = 6        //按是按钮
 idNo = 7        //按否按钮

例子:messagebox(0,'没有选择播放类型','错误',MB_ICONEXCLAMATION );

--Application.MessageBox('MessageBox','警告',MB_ICONWARNING+MB_YesNo);
--MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel);
--MessageBox(Form1.Handle,'MessageBox','提示‘,MB_ICONINFORMATION+MB_OkCancel+MB_DEFBUTTON2);
-- if MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel)= idOk then
begin
ShowMessage('Ok');
end;


如果想判断用户选择了那个按钮可以这样
var
x:integer;
begin
x:=MessageBox(0,'你确定此操作吗?','询问',MB_OKCANCEL);
end;
判断时可以是if x=1 then ..或if x=idok then...

自定义出现的按钮:

MB_ABORTRETRYIGNORE //按钮: 终止、重试、忽略
MB_OK //按钮: 确定 (默认出现的按钮)
MB_OKCANCEL //按钮: 确定、取消
MB_RETRYCANCEL //按钮: 重试、取消
MB_YESNO //按钮: 是、否
MB_YESNOCANCEL //按钮: 是、否、取消
自定义出现的图标:

MB_ICONEXCLAMATION, MB_ICONWARNING //带感叹号的提醒图标
MB_ICONINFORMATION, MB_ICONASTERISK //带”i“符号的信息提示图标
MB_ICONQUESTION //带问号的询问图标
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND //带停止标志的图标
自定义默认焦点的按钮:

MB_DEF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/868991.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

abb焊接机器人在运行过程中所遇到的问题及解决办法

一、硬件故障电气元件故障故障表现:如继电器、开关、熔断器等失效,可能是由于这些元器件的质量、性能与工作环境等因素引起的。 解决方法:对失效或破损的元器件进行维修或更换。 线路故障故障表现:长时间工作运动可能导致连接abb机器人本体的电缆或电线发生疲劳破损。 解…

Win10上用Qemu安装LoongArch版的Deepin系统

我前面有一篇贴子写了使用Loongnix搭建开发环境(https://www.cnblogs.com/airscrat/p/17142185.html),使用的虚拟机是直接下载的龙芯团队预装的,贴子并未介绍怎么用iso镜像文件安装虚拟机系统。当前Deepin loong64 v23版本已经发布,界面也漂亮,下面就一步一步的从iso安装…

Avalonia银河麒麟系统软件运行环境安装

软件运行需要安装.NET 6.0。 安装方式如下: 电脑桌面鼠标右击“打开终端” ,输入“dotnet --version ”,查看电脑是否有.net 6.0。图1_打开终端窗口示意图 在线安装方法:(.net6.0 安装方法二选一即可) 如果没有.NET 6.0 ,将电脑连接外网,鼠标右击“打开终端”,输入下面…

安川并联机器人维修步骤讲解

一、安川机器人维修步骤 1、断电与拆卸: 确保电机处于断电状态,以避免触电危险。 拆卸YASKAWA蜘蛛手机械臂电机外壳,以便检查内部零部件。 2、内部检查: 检查内部结构是否正常,零部件是否有损坏。 对损坏的零部件进行更换,清洗内部的灰尘和杂物。 3、故障诊断: 根据…

深入解析 Spring AI 系列:解析OpenAI接口对接

今天我们将主要探讨OpenAI是如何进行接口对接的,虽然我们不打算深入细节,但会对整体流程进行一个大概的了解。后续会逐步分析其中的具体细节,大家可以耐心等待,逐步展开。好的,现在让我们开始,下面是我简单绘制的一张图示,旨在帮助大家更好地理解接下来的分析流程。Open…

赛果公布!有灵AOP平台首届编程挑战赛圆满落幕

近日,网易伏羲有灵AOP平台首届编程挑战赛顺利落下帷幕。自赛事启动以来,在短短几周的时间里,来自各地的优秀开发者们汇集于此,通过人机协作的形式,完成了多项充满创意和技术深度的任务。此次挑战赛不仅展现了参赛者的卓越编程技能,也体现了AOP(Agent Oriented Programmi…

华大HC32F4A0串口使用及printf重定向

说明: 轮询 polling方法 更改自小华HC32官方库DDL_2.2.0版本相关宏定义 /* 串口 */ #define USART_RX_PORT (GPIO_PORT_B) /* PH13: USART1_RX */ #define USART_RX_PIN (GPIO_PIN_15) #define USART_RX_GPIO_FUNC (GPIO…

HC32F4A0串口使用

说明: 轮询 polling方法 更改自HC32官方库2.2.0版本相关宏定义 /* 串口 */ #define USART_RX_PORT (GPIO_PORT_B) /* PH13: USART1_RX */ #define USART_RX_PIN (GPIO_PIN_15) #define USART_RX_GPIO_FUNC (GPIO_FUNC_33…

读量子霸权03量子的崛起

瑞利-金斯灾变揭示牛顿力学漏洞,普朗克提出量子理论颠覆传统。爱因斯坦解释光电效应,薛定谔方程成量子基石。量子纠缠等理论展现量子世界奇妙,量子计算机应运而生。1. 瑞利-金斯灾变 1.1. 也被称为紫外灾变1.1.1. 在高频条件下发射的能量应该是无限大的,而这在现实中是根本…

宠物经济与即时零售:如何把握双赢机遇?

借助板栗看板,宠物食品和用品的即时零售模式可以实现从营销目标设定、库存管理、营销活动规划、顾客互动到数据分析与反馈的全链条优化。这不仅能够提升运营效率,还能增强品牌影响力,提升顾客满意度和忠诚度。宠物即时零售是近年来随着宠物经济的蓬勃发展和即时零售模式的兴…

manim边做边学--动画联动

今天介绍Manim中的动画联动的技巧,在数学动画中,动画联动是常用的功能, 比如讲解平面几何中三角形与圆的位置关系变化,通过动画联动可以让圆沿着三角形的边滚动,或者让三角形的顶点在圆上移动,从而直观地展示内切、外接等几何关系。 总之,通过动画联动,可以将复杂的概念…

刷力扣的技巧:4 个步骤 7 个关键点,事半功倍,冲进大厂!

最近好多人问我咋刷力扣呀,今天我就来给大家好好唠唠。我总结了7个要点和4个步骤,尤其是最后那提效4步骤,可太有用啦。 大家一定要看到最后哦,记得点赞、收藏呀。要点一:别光追求刷题量,题解也得看 咱好多同学呀,解开一道题就着急忙慌地去刷下一道,还把刷题数量当成衡量…