【问题标题】:Showmessage on top of a modal form模态表单顶部的显示消息
【发布时间】:2016-06-21 09:12:43
【问题描述】:

使用下面的代码,当我调用MessageDlg 时,模态表单消失了。
如何避免?

...     
LoginForm_Create; //FfrmLoginForm created here
try
  if FfrmLoginForm.ShowModal = mrOk then 
  begin
    Fuser := db_authuser( FfrmLoginForm.edtUserName.Text, FfrmLoginForm.edtPassword.text ); 
  if Fuser <> nil then 
    result := 1
  else begin
    MessageDlg('Username or password invalid', mtError, [mbOK], 0);
    result := -2;
  end;
end else //mrCancel
  result := -1;
finally
  LoginForm_Close; // << FfrmLoginForm.Release;
end;
...

【问题讨论】:

  • 那是因为你的其余代码是在 ShowModal 之后执行的。您应该做的是输入该身份验证代码,例如在您的 FfrmLoginForm.OnShow() 处理程序中。然后你可以设置 ModalResult 来表示成功或失败。

标签: forms delphi dialog modal-dialog


【解决方案1】:

ShowModal 返回时关闭表单。因此,您观察到的行为。

如果您希望对话框显示在模态表单的顶部,您需要在ShowModal 返回之前显示它。通过将mrOK 代码移动到模态表单上将ModalResult 设置为mrOK 的任何代码中来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多