2016-06-21 106 views
1

随着代码波纹管,当我呼叫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; 
... 
+2

这是因为您的代码的其余部分在* ShowModal后执行*。你应该做的是把认证码例如在您的FfrmLoginForm.OnShow()处理程序中。然后,您可以设置ModalResult来指示成功或失败。 –

回答

3

该表格在ShowModal返回时关闭。因此你观察到的行为。

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