Q&A

  • Modal폼 종료 문제
델초보 올립니다...

도움 주시면 감사하겠읍니다...

MDI폼을 메인폼으로 띄우고 Login폼을 모달폼으로 먼저 띄웠읍니다...

그런데 띄우는 데는 문제점이 없는데 종료할때 정상적으로 종료가 안되고 에러가 뜹니다

밑에 소스올립니다...도움주시면 감사하겠읍니다...



***밑에 소스는 메인폼에서 Modal폼을 띄운것입니다***



procedure Tkp1.FormCreate(Sender: TObject);

begin

kp0 := Tkp0.create(Application); //login 폼 동적생성

kp0.showmodal(); //모달폼으로...

if kp0.modalresult = mrOK then

begin

kp0.free;

kp0 := nil;

end

else if kp0.modalresult = mrcancel then

begin

kp0.free;

kp0 := nil;

kp1.close;

kp1.free;

end;

end;



***밑에 소스는 확인버튼을 누르면 메인폼을 띄우고 종료버튼을 누르면 프로그램을

종료하는 소스입니다



procedure Tkp0.Button2Click(Sender: TObject);

begin

modalresult := mrcancel;

end;



procedure Tkp0.Button1Click(Sender: TObject);

begin

Modalresult := mrOK;

end;



이상입니다 도움주시면 감사하겠읍니다



2  COMMENTS
  • Profile
    남기석 2000.10.24 08:07
    안녕하세요

    청개구리 남기석입니다.



    FormCreate 이벤트에서는 자기 자신을 Close할 수 없습니다.

    전역변수를 설정하셔서 FormActivate 이벤트에서 처리하셔야 합니다.



    var

    LoginOK : Boolean;



    implementation



    procedure Tkp1.FormCreate(Sender: TObject);

    begin

    ............

    ............

    if kp0.showmodal = mrOK then

    LoginOK := True

    else

    LoginOK := False;

    ............

    ............

    end;



    procedure Tkp1.FormActivate(Sender: TObject);

    begin

    if LoginOK = False then

    Close;

    end;



    행복하세요...



    =============================================================================



    김지명 wrote:

    > 델초보 올립니다...

    > 도움 주시면 감사하겠읍니다...

    > MDI폼을 메인폼으로 띄우고 Login폼을 모달폼으로 먼저 띄웠읍니다...

    > 그런데 띄우는 데는 문제점이 없는데 종료할때 정상적으로 종료가 안되고 에러가 뜹니다

    > 밑에 소스올립니다...도움주시면 감사하겠읍니다...

    >

    > ***밑에 소스는 메인폼에서 Modal폼을 띄운것입니다***

    >

    > procedure Tkp1.FormCreate(Sender: TObject);

    > begin

    > kp0 := Tkp0.create(Application); //login 폼 동적생성

    > kp0.showmodal(); //모달폼으로...

    > if kp0.modalresult = mrOK then

    > begin

    > kp0.free;

    > kp0 := nil;

    > end

    > else if kp0.modalresult = mrcancel then

    > begin

    > kp0.free;

    > kp0 := nil;

    > kp1.close;

    > kp1.free;

    > end;

    > end;

    >

    > ***밑에 소스는 확인버튼을 누르면 메인폼을 띄우고 종료버튼을 누르면 프로그램을

    > 종료하는 소스입니다

    >

    > procedure Tkp0.Button2Click(Sender: TObject);

    > begin

    > modalresult := mrcancel;

    > end;

    >

    > procedure Tkp0.Button1Click(Sender: TObject);

    > begin

    > Modalresult := mrOK;

    > end;

    >

    > 이상입니다 도움주시면 감사하겠읍니다

    >

  • Profile
    김지명 2000.10.25 01:31
    남기석 wrote:

    > 안녕하세요

    > 청개구리 남기석입니다.

    >

    > FormCreate 이벤트에서는 자기 자신을 Close할 수 없습니다.

    > 전역변수를 설정하셔서 FormActivate 이벤트에서 처리하셔야 합니다.

    >

    > var

    > LoginOK : Boolean;

    >

    > implementation

    >

    > procedure Tkp1.FormCreate(Sender: TObject);

    > begin

    > ............

    > ............

    > if kp0.showmodal = mrOK then

    > LoginOK := True

    > else

    > LoginOK := False;

    > ............

    > ............

    > end;

    >

    > procedure Tkp1.FormActivate(Sender: TObject);

    > begin

    > if LoginOK = False then

    > Close;

    > end;

    >

    > 행복하세요...

    >

    > =============================================================================

    >

    > 김지명 wrote:

    > > 델초보 올립니다...

    > > 도움 주시면 감사하겠읍니다...

    > > MDI폼을 메인폼으로 띄우고 Login폼을 모달폼으로 먼저 띄웠읍니다...

    > > 그런데 띄우는 데는 문제점이 없는데 종료할때 정상적으로 종료가 안되고 에러가 뜹니다

    > > 밑에 소스올립니다...도움주시면 감사하겠읍니다...

    > >

    > > ***밑에 소스는 메인폼에서 Modal폼을 띄운것입니다***

    > >

    > > procedure Tkp1.FormCreate(Sender: TObject);

    > > begin

    > > kp0 := Tkp0.create(Application); //login 폼 동적생성

    > > kp0.showmodal(); //모달폼으로...

    > > if kp0.modalresult = mrOK then

    > > begin

    > > kp0.free;

    > > kp0 := nil;

    > > end

    > > else if kp0.modalresult = mrcancel then

    > > begin

    > > kp0.free;

    > > kp0 := nil;

    > > kp1.close;

    > > kp1.free;

    > > end;

    > > end;

    > >

    > > ***밑에 소스는 확인버튼을 누르면 메인폼을 띄우고 종료버튼을 누르면 프로그램을

    > > 종료하는 소스입니다

    > >

    > > procedure Tkp0.Button2Click(Sender: TObject);

    > > begin

    > > modalresult := mrcancel;

    > > end;

    > >

    > > procedure Tkp0.Button1Click(Sender: TObject);

    > > begin

    > > Modalresult := mrOK;

    > > end;

    > >

    > > 이상입니다 도움주시면 감사하겠읍니다

    > >