Delphi MessageBox的一般问题
messagebox(句柄“你真的想退出吗?”,“你确定吗?”,1) 在这个按钮中有两件事,用户可以做什么。好的,取消。Delphi MessageBox的一般问题,delphi,messagebox,Delphi,Messagebox,messagebox(句柄“你真的想退出吗?”,“你确定吗?”,1) 在这个按钮中有两件事,用户可以做什么。好的,取消。 按下“取消”时,按钮在“确定”时关闭程序并结束对话框,我必须编写什么代码?首先,确保消息框中的按钮与文本匹配。因此,如果文本是“您真的想退出吗?”那么按钮应该是“是”和“否” 其次,使用适当的常量,以便以后更容易阅读代码。这将是: var Res: integer; Res := Application.MessageBox('Do you really want to
按下“取消”时,按钮在“确定”时关闭程序并结束对话框,我必须编写什么代码?首先,确保消息框中的按钮与文本匹配。因此,如果文本是“您真的想退出吗?”那么按钮应该是“是”和“否” 其次,使用适当的常量,以便以后更容易阅读代码。这将是:
var
Res: integer;
Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
MB_ICONQUESTION or MB_YESNO);
结果将是IDYES或IDNO。因此,假设调用位于主窗体的方法内,您可以像这样使用它:
if Res = IDYES then
Close;
如果你从另一个地方打电话,你也可以打电话
if Res = IDYES then
Application.Terminate;
编辑:请检查以下状态:
不必要的确认很烦人
首先,确保消息框中的按钮与文本匹配。因此,如果文本是“您真的想退出吗?”那么按钮应该是“是”和“否” 其次,使用适当的常量,以便以后更容易阅读代码。这将是:
var
Res: integer;
Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
MB_ICONQUESTION or MB_YESNO);
结果将是IDYES或IDNO。因此,假设调用位于主窗体的方法内,您可以像这样使用它:
if Res = IDYES then
Close;
如果你从另一个地方打电话,你也可以打电话
if Res = IDYES then
Application.Terminate;
编辑:请检查以下状态:
不必要的确认很烦人
Delphi为显示messagebox提供了更好的解决方案。 我应该使用MessageDlg函数。MessageDlg(和MessageBox)函数的返回值表示用户的选择。因此,当您在消息DLG上放置“是”按钮时,当用户按下“是”按钮时,返回值将为mrYes。 因此,您的代码如下所示:
var
ShouldClose: Boolean;
begin
if MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
ShouldClose := True
else
ShouldClose := False;
end;
如果用户选择“是”,您还希望关闭应用程序。
当您有一个普通的Delphi VCL应用程序时,您可以实现mainform的CloseQuery事件,CloseQuery事件在您尝试关闭mainform(如单击closebutton)时执行,并且有一个变量CanClose。将CanClose设置为True表示可以关闭主窗体,将其设置为false将阻止主窗体关闭:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;
Delphi为显示messagebox提供了更好的解决方案。 我应该使用MessageDlg函数。MessageDlg(和MessageBox)函数的返回值表示用户的选择。因此,当您在消息DLG上放置“是”按钮时,当用户按下“是”按钮时,返回值将为mrYes。 因此,您的代码如下所示:
var
ShouldClose: Boolean;
begin
if MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
ShouldClose := True
else
ShouldClose := False;
end;
如果用户选择“是”,您还希望关闭应用程序。
当您有一个普通的Delphi VCL应用程序时,您可以实现mainform的CloseQuery事件,CloseQuery事件在您尝试关闭mainform(如单击closebutton)时执行,并且有一个变量CanClose。将CanClose设置为True表示可以关闭主窗体,将其设置为false将阻止主窗体关闭:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;
MessageDlg很好,但不是本地化的。如果他正在编写非英语程序,并且没有使用任何本地化方法,我建议使用Application.MessageBox。Application.MessageBox将加载windows本地化版本中的windows对话框。当我复制并粘贴您的第一个代码时,消息框会出现,但无论单击什么,都不会发生任何情况,消息框只会关闭。当你有一个新的Delphi VCL应用程序:添加一个按钮,在它的处理程序中添加:关闭;转到窗体,转到事件,添加FormClose事件。使eventhandler看起来像我的第二个代码示例;MessageDlg很好,但不是本地化的。如果他正在编写非英语程序,并且没有使用任何本地化方法,我建议使用Application.MessageBox。Application.MessageBox将加载windows本地化版本中的windows对话框。当我复制并粘贴您的第一个代码时,消息框会出现,但无论单击什么,都不会发生任何情况,消息框只会关闭。当你有一个新的Delphi VCL应用程序:添加一个按钮,在它的处理程序中添加:关闭;转到窗体,转到事件,添加FormClose事件。使eventhandler看起来像我的第二个代码示例;