messagebox (handle, '你真的要退出吗?', '你确定吗?', 1);
在这个按钮中有两件事,用户可以做什么。好的并取消。我必须编写什么代码,按钮在“ok”时关闭程序并在按下取消时结束对话框?
messagebox (handle, '你真的要退出吗?', '你确定吗?', 1);
在这个按钮中有两件事,用户可以做什么。好的并取消。我必须编写什么代码,按钮在“ok”时关闭程序并在按下取消时结束对话框?
首先,确保消息框中的按钮与文本匹配。所以如果文本是“你真的要退出吗?” 那么按钮应该是“是”和“否”。
其次,使用适当的常量,以便以后更容易阅读您的代码。那将是:
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;
编辑:请同时查看对话框中的 Vista 用户界面指南,其中指出:
不必要的确认很烦人
Delphi 为显示消息框提供了更好的解决方案。我应该使用 MessageDlg 函数。MessageDlg(和MessageBox)函数的返回值表明了用户的选择。因此,当您在 MessageDlg 上放置一个 yes 按钮时,当用户按下 Yes 按钮时,返回值将是 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 应用程序时,您可以实现主窗体的 CloseQuery 事件,当您尝试关闭主窗体(如单击关闭按钮)并具有变量 CanClose 时,将执行 CloseQuery 事件。将 CanClose 设置为 True 意味着 MainForm 可以关闭,将其设置为 false 将阻止您的 mainform 关闭:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;