먼저 소스를 보면.
program Form1;
uses
Forms,
UUnit1 in 'UUnit1.pas' {Form1},
ULogin in 'UUnit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
이렇게 실행되는데,
TForm1가 실행되기전에, TForm2을 실행 시켜서, 아이디 패스워드 체크등,
사용자 입력에 따라 TForm1의 실행여부를 결정하려 합니다.
TForm1, TForm2내부는 별다른게 없고, 일단 그 실행여부를 결정하려는데,
TForm2의 입력에 따라 TFrom1를 Close를 해도,
즉, TForm2에서 사용자의 입력에 따라,
if Edit2.Text = [wrong password] then
form1.Close;
이렇게 close를 해도,
Application.CreateForm(TForm1, Form1);
가 실행되어 TForm2가 실행됩니다.
어떻게 TForm1에서 TForm2의 실행을 막을 수 있을까요...
이러한 방법은 별루 좋은 방법이 아니구요... 스플래쉬폼에서 자주사용하는 것처럼 모들형식으로 호출하세요...
패스워드가맞다면 폼2의 ModalResult에 mrOk를 넣어주고, 틀리다면 mrCancel을 넣어주시면 됩니다...
프로젝트소스
var
CorrectPassword: Boolean;
begin
Form2 := TForm2.Create(nil);
CorrectPassword := Form2.ShowModal;
Form2.Free;
if CorrectPassword = mrOK then // 패스워드가 맞다면... 폼1을 연다...
begin // 맞지 않다면 프로그램 그냥 종료...
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
폼2
if Edit2.Text = [wrong password] then
ModalResult := mrCancel
else
ModalResult := mrOk;
^^ 항상 즐코하세요...
초보 wrote:
> 먼저 소스를 보면.
> program Form1;
>
> uses
> Forms,
> UUnit1 in 'UUnit1.pas' {Form1},
> ULogin in 'UUnit2.pas' {Form2};
>
> {$R *.RES}
>
> begin
> Application.Initialize;
> Application.CreateForm(TForm2, Form2);
> Application.CreateForm(TForm1, Form1);
> Application.Run;
> end.
>
> 이렇게 실행되는데,
> TForm1가 실행되기전에, TForm2을 실행 시켜서, 아이디 패스워드 체크등,
> 사용자 입력에 따라 TForm1의 실행여부를 결정하려 합니다.
>
> TForm1, TForm2내부는 별다른게 없고, 일단 그 실행여부를 결정하려는데,
> TForm2의 입력에 따라 TFrom1를 Close를 해도,
> 즉, TForm2에서 사용자의 입력에 따라,
>
> if Edit2.Text = [wrong password] then
> form1.Close;
>
> 이렇게 close를 해도,
>
> Application.CreateForm(TForm1, Form1);
>
> 가 실행되어 TForm2가 실행됩니다.
> 어떻게 TForm1에서 TForm2의 실행을 막을 수 있을까요...