紧急求助:delphi问题:为什么我的messagebox每次弹出都在屏幕的最右下角?!!在线等

时间:2021-09-07 17:33:33
紧急求助:delphi问题:为什么我的messagebox每次弹出都在屏幕的最右下角?!!(郁闷中。。。)在线等
另外,在delphi中能控制messagebox的弹出位置吗?

15 个解决方案

#1


什么呀

#2


关注 接分

#3


唉,一直没有答案。只有把分给自己了。。。

#4


  如果是API的MessageBox,没办法的吧。   
  如果是ShowMessage,那么可以用ShowMessagePos;   
  如果是MessageDlg,那么可以用MessageDlgPosHelp;


=================================================================
MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对框。
 1、函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
 hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
 Text:欲显示的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的返回值为整数,用于对话框按钮的识别。
 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
 3、函数返回值
 0             //对话框建立失败
 idOk = 1        //按确定按钮
 idCancel = 2      //按取消按钮
 idAbout = 3       //按异常终止按钮
 idRetry = 4       //按重试按钮
 idIgnore = 5      //按忽略按钮
 idYes = 6         //按是按钮
 idNo = 7         //按否按钮 

#5


楼上。猛人也... |

#6


Application.MessageBox('你好,请试一下这个方法', 'test', mb_OK)

#7


引用 3 楼 yzx_lsyh 的回复:
唉,一直没有答案。只有把分给自己了。。。

这都可以 你也太牛了吧! o(∩_∩)o...哈哈 

看下你窗体的位置
把窗体位置设置为居中 看看 

具体问题参考下4楼 6楼

#8


MessageBox(Handle, '...', '...', MB_OK);
第一个Handle不要省略,它表示MessageBox的Owner,你要在哪个窗体居中显示就用那个窗体的Handle,用0表示在全屏幕居中,但是有时好像不好用,用Application.Hanlde不知道什么意思,有时候好用有时不好用,因为Application.Handle是个隐藏的主窗体。

#9


Application.MessageBox
应该在中间才对,不应该在右下角啊

#10


4楼说的真详细

#11


我也遇到过
没事的,不用管它,过段时间,他自动就好拉.

#12


很可能是出现了一个小错误,那个提示被盖住了,

之后其他的提示框都会在那个位置出现,建议检查下进程

或者看看重启系统后会否发生

#13


这是头痛的事

#14


关注

#15


谢谢各位兄弟姐妹的回答。
总结:
   是操作系统的问题。在2000环境下编译的,到了NT下面使用的时候经常会出现这样的情况。但不知道和系统的什么参数有关。重装系统好了。

#1


什么呀

#2


关注 接分

#3


唉,一直没有答案。只有把分给自己了。。。

#4


  如果是API的MessageBox,没办法的吧。   
  如果是ShowMessage,那么可以用ShowMessagePos;   
  如果是MessageDlg,那么可以用MessageDlgPosHelp;


=================================================================
MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对框。
 1、函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
 hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
 Text:欲显示的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的返回值为整数,用于对话框按钮的识别。
 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
 3、函数返回值
 0             //对话框建立失败
 idOk = 1        //按确定按钮
 idCancel = 2      //按取消按钮
 idAbout = 3       //按异常终止按钮
 idRetry = 4       //按重试按钮
 idIgnore = 5      //按忽略按钮
 idYes = 6         //按是按钮
 idNo = 7         //按否按钮 

#5


楼上。猛人也... |

#6


Application.MessageBox('你好,请试一下这个方法', 'test', mb_OK)

#7


引用 3 楼 yzx_lsyh 的回复:
唉,一直没有答案。只有把分给自己了。。。

这都可以 你也太牛了吧! o(∩_∩)o...哈哈 

看下你窗体的位置
把窗体位置设置为居中 看看 

具体问题参考下4楼 6楼

#8


MessageBox(Handle, '...', '...', MB_OK);
第一个Handle不要省略,它表示MessageBox的Owner,你要在哪个窗体居中显示就用那个窗体的Handle,用0表示在全屏幕居中,但是有时好像不好用,用Application.Hanlde不知道什么意思,有时候好用有时不好用,因为Application.Handle是个隐藏的主窗体。

#9


Application.MessageBox
应该在中间才对,不应该在右下角啊

#10


4楼说的真详细

#11


我也遇到过
没事的,不用管它,过段时间,他自动就好拉.

#12


很可能是出现了一个小错误,那个提示被盖住了,

之后其他的提示框都会在那个位置出现,建议检查下进程

或者看看重启系统后会否发生

#13


这是头痛的事

#14


关注

#15


谢谢各位兄弟姐妹的回答。
总结:
   是操作系统的问题。在2000环境下编译的,到了NT下面使用的时候经常会出现这样的情况。但不知道和系统的什么参数有关。重装系统好了。