로그인 창을 구현하고 있는데.. 로그인이 실패하면 창이 다시 떠야하는데
두번 정도 실패하면 로그인창이 닫혀 버립니다.
이 게시판에서 '로그인'으로 검색해서 답변들을 봤는데 도움이 될 만한
답변을 못 찾았습니다..
오늘 하루 종일 헤메고 있네요.. 오늘 안에 끝낼 수 있도록 도와주세요.. ㅠ_ㅠ
--------------------------------------
소스
--------------------------------------
<< main.pas (메인화면) >>
procedure TfmMain.FormCreate(Sender: TObject);
begin
LoginShow := True;
end;
procedure TfmMain.FormActivate(Sender: TObject);
begin
if LoginShow then
begin
LoginShow := False;
Application.CreateForm(TfmLogin, fmLogin);
fmLogin.ShowModal;
if fmLogin.ModalResult = mrOK then begin
// showmessage('aaa');
fmMain.Show;
end
else begin
// showmessage('aaa11');
// fmMain.Show;
// LoginShow := True;
fmLogin.ShowModal;
end;
end;
end;
---------------------------------------------------
<< login.pas (로그인 화면) - 모달 폼.. >>
procedure TfmLogin.BitBtn1Click(Sender: TObject);
begin
if eUserID.Text = '' then begin
Showmessage('사용자 아이디를 입력 하세요.');
exit;
end;
if ePasswd.Text = '' then begin
Showmessage('암호를 입력 하세요.');
exit;
end;
with DModule.qrySQL do begin
close;
sql.clear;
sql.add('Select passwd, rights');
sql.add('from test_login' );
sql.add('where userid =' + QuotedStr(eUserId.Text));
open;
if EOF then begin
showmessage('사용자 아이디가 존재하지 않습니다.');
eUserId.setFocus;
eUserId.SelStart := 0;
eUserId.SelLength := length(eUserId.text);
end
else begin
if UpperCase(Fields[0].AsString) = UpperCase(ePasswd.Text) then begin
ModalResult := mrOK;
end
else begin
Showmessage('암호가 틀립니다.' + #13#10 + '다시 확인 바랍니다.');
ePasswd.setFocus;
ePasswd.SelStart := 0;
ePasswd.SelLength := length(ePasswd.text);
end;
end;
end;
end;
--------------------------------------------------------------------
procedure TFrmPasswordDlg.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TFrmPasswordDlg.FormDestroy(Sender: TObject);
begin
FrmPasswordDlg := nil;
end;
procedure TFrmPasswordDlg.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if ModalResult = mrRetry then
CanClose := False
else CanClose := True;
end;
//로그인버튼
procedure TFrmPasswordDlg.SPBT_OKClick(Sender: TObject);
begin
if gUserPass <> EDIT_PASSWORD.Text then
begin
MessageDlg('암호가 일치하지 않습니다', mtWarning, [mbOK], 0);
EDIT_PASSWORD.SetFocus;
ModalResult := mrRetry
end else ModalResult := mrOK;
end;