2016-06-21 12 views
1

Mit dem Code unten, wenn ich MessageDlg aufrufen, verschwindet die modale Form.
Wie zu vermeiden?ShowMessage auf einem modalen Formular

...  
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

Das ist, weil der Rest Ihres Codes * nach * ShowModal ausgeführt wird. Was Sie tun sollten, ist diesen Authentifizierungscode z.B. in Ihrem FfrmLoginForm.OnShow() - Handler. Sie können ModalResult dann setzen, um Erfolg oder Misserfolg zu signalisieren. –

Antwort

3

Das Formular ist geschlossen, wenn ShowModal zurückkehrt. Daher das Verhalten, das du beobachtest.

Wenn Sie möchten, dass Ihr Dialog über dem modalen Formular angezeigt wird, müssen Sie es anzeigen, bevor ShowModal zurückgibt. Tun Sie das, indem Sie den mrOK Code in den Code auf Ihrem modalen Formular setzen ModalResult zu mrOK.