<.dpr 화일.>
FmLogin := TFmLogin.Create(Application);
FmLogin.ShowModal; // ---> 로그인 화면
FmLogin.Free;
frmsplash:=Tfrmsplash.create(application);
frmsplash.show;
frmsplash.update;
Application.Initialize;
Application.Title := 'aaaa';
Application.HelpFile := '';
Application.CreateForm(TMAIN, MAIN);
Frmstart.Free;
Application.Run;
위와 같이 로그인화면-->splash화면--->메인화면 띄우는데...
로그인 화면에서 id와 passwd가 맞으면 메인을 띄우고 안 맞으면
로그인 화면이 그대로 있으면 되는데...잘 안되네요...
<로그인 화일.>
if 맞으면 then
fmlogin.close
else
begin
messagedlg('사용자 이름과 비밀번호를 다시 확인하세요');
edit1.setfocus;
end;
위에서 else인 경우에 메시지 다이얼로그는 뜨는데 뜬 후에 로그인 화면이
그대로 있고 포커스가 edit1로 가면 정상인데...
메시지 다이얼로그는 뜨는데 오케이를 누르면 로그인 화면이 죽고
메인이 떠버리네요...
이해가 안되네요...
이해가 안되시겠지만 말씀하신대로 정상적으로 작동을 했네요... 예전에도 몇번 답변을
했지만 ShowModal에 관해서 이해가 약간 부족하시네요....
폼이 모들형태(ShowModal호출)로 실행될때 종료가 될 조건은 폼의 ModalResult속성에
mrNone이 아닌값이 들어왔을때입니다. 폼의 캡션바에 있는 Close Box를 클릭해서 종료
하거나 시스템메뉴의 종료메뉴를 클릭하면 mrCancel값이 들어갑니다. 문제는 버튼인데
모들폼에서의 버튼은 대부분 버튼의 ModalResult속성에 mrNone이 아닌값을 넣어서
사용하죠... mrOk, mrYes, mrNO, mrCancel과 같은 값들을...
모들폼에서 버튼을 클릭했을때는 버튼의 ModalResult에 있는 값이 모들폼의 ModalResult
속성에 전달됩니다. 그러므로 버튼에 mrNone이 아닌값이 들어가 있다면 버튼을 누름과
동시에 모들폼이 종료가 됩니다. 그렇기 때문에 아래 코딩하신 것처럼
messagedlg('사용자 이름과 비밀번호를 다시 확인하세요');
edit1.setfocus;
Edit1으로 포커스를 보내고 그냥 종료가 되는 것입니다. 종료를 안시킬려면 버튼의
ModalResult값을 mrNone으로 해주어야줘.... 아님 폼의 ModalResult값을 mrNone으로
해주시던가요...
<로그인 화일.>
// 아마도 이부분이 OK이나 확인 버튼을 눌렀을 때의 코딩이겠죠?
// 아닌가?? 아니면 코딩이 틀려지는데... 쩝...
if 맞으면 then
TButton(Sender).ModalResult := mrOK
else
begin
messagedlg('사용자 이름과 비밀번호를 다시 확인하세요');
edit1.setfocus;
TButton(Sender).ModalResult := mrNone;
end;
이렇게 하시면 될것입니다.
^^ 항상 즐코하세요.
델초보녀 wrote:
> <.dpr 화일.>
>
> FmLogin := TFmLogin.Create(Application);
> FmLogin.ShowModal; // ---> 로그인 화면
> FmLogin.Free;
>
> frmsplash:=Tfrmsplash.create(application);
> frmsplash.show;
> frmsplash.update;
>
> Application.Initialize;
> Application.Title := 'aaaa';
> Application.HelpFile := '';
> Application.CreateForm(TMAIN, MAIN);
>
> Frmstart.Free;
> Application.Run;
>
> 위와 같이 로그인화면-->splash화면--->메인화면 띄우는데...
> 로그인 화면에서 id와 passwd가 맞으면 메인을 띄우고 안 맞으면
> 로그인 화면이 그대로 있으면 되는데...잘 안되네요...
>
> <로그인 화일.>
>
> if 맞으면 then
> fmlogin.close
> else
> begin
> messagedlg('사용자 이름과 비밀번호를 다시 확인하세요');
> edit1.setfocus;
> end;
>
> 위에서 else인 경우에 메시지 다이얼로그는 뜨는데 뜬 후에 로그인 화면이
> 그대로 있고 포커스가 edit1로 가면 정상인데...
> 메시지 다이얼로그는 뜨는데 오케이를 누르면 로그인 화면이 죽고
> 메인이 떠버리네요...
>
> 이해가 안되네요...