使用下面的代码,当我调用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;
...
答案 0 :(得分:3)
ShowModal
返回时表单已关闭。因此,你观察到的行为。
如果您希望对话框显示在模态表单之上,则需要在ShowModal
返回之前显示它。通过将mrOK
代码移动到模式表单上的任何代码设置ModalResult
到mrOK
来执行此操作。