Q&A

  • 폼을 종료할때......
f9로 컴파일한후 종료했는데도 f9키가 다시 활성화되지 않습니다.

확인결과 프로세스에 해당 프로그램이 닫히지 않고 열려잇더군여...

폼은 sdi형태이고...총 2개의 폼입니다.

메인폼에서 두번째폼을 활성화시키지않고 그냥 종료하면 종료됩니다.

근데....두번째 폼을 뛰운 상태에서 죽이면 겉으로 보기엔 죽은거 같은데...사실은 죽지 않았더구녀....

이런식으로 죽였습니다.

form1.free;

form2.free;



아래처럼도 해보았는데....스택에러가 생기더군여..

form1.close;

form2.close;



2  COMMENTS
  • Profile
    토맛토 2001.06.24 01:34
    두번째 폼에 별다른 코드가 없다면 일반적으로 프로그램을 종료하는데 특별한 방법이 필요한 것은 아닙니다.

    게다가 TForm은 TComponent를 상속받았으므로 동적으로 생성할 때 parent를 설정하지 않은 경우라 아니면 메인 폼 종료시 같이 없어지도록 되어 있으니까 별로 신경쓸 부분은 없지요 즉, TForm.free를 써서 메모리에서 없애는 과정을 밟을 필요까진 없다는 것입니다.



    대부분 이런 문제는 새로운 쓰레드를 생성하였는데 이 쓰레드가 미처 종료되기 전에 프로그램을 닫아서 메인 쓰레드를 종료하려고 할 때 발생합니다. 반드시 쓰레드(TThread)를 상속받은 클래스라고 명시하지 않더라도 별도의 쓰레드를 생성하여 동작하는 컴포넌트나 동작이나 메모리 해제 등이 명확하게 되어 있지 않은 코드가 Form2에 있는지 확인하여 보십시오



    김동수 wrote:

    > f9로 컴파일한후 종료했는데도 f9키가 다시 활성화되지 않습니다.

    > 확인결과 프로세스에 해당 프로그램이 닫히지 않고 열려잇더군여...

    > 폼은 sdi형태이고...총 2개의 폼입니다.

    > 메인폼에서 두번째폼을 활성화시키지않고 그냥 종료하면 종료됩니다.

    > 근데....두번째 폼을 뛰운 상태에서 죽이면 겉으로 보기엔 죽은거 같은데...사실은 죽지 않았더구녀....

    > 이런식으로 죽였습니다.

    > form1.free;

    > form2.free;

    >

    > 아래처럼도 해보았는데....스택에러가 생기더군여..

    > form1.close;

    > form2.close;

    >

  • Profile
    aparadin 2001.06.24 01:16
    김동수 wrote:

    > f9로 컴파일한후 종료했는데도 f9키가 다시 활성화되지 않습니다.

    > 확인결과 프로세스에 해당 프로그램이 닫히지 않고 열려잇더군여...

    > 폼은 sdi형태이고...총 2개의 폼입니다.

    > 메인폼에서 두번째폼을 활성화시키지않고 그냥 종료하면 종료됩니다.

    > 근데....두번째 폼을 뛰운 상태에서 죽이면 겉으로 보기엔 죽은거 같은데...사실은 죽지 않았더구녀....

    > 이런식으로 죽였습니다.

    > form1.free;

    > form2.free;

    >

    > 아래처럼도 해보았는데....스택에러가 생기더군여..

    > form1.close;

    > form2.close;

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

    아빠폼에서 생성한 부분에....

    Free를

    그러니까..아빠에서는 이렇게 하시고..

    procedure TForm1.Create_Form2 (Sender: TObject);

    begin

    TForm2.Create(Application);

    TForm2.Show;

    TForm2.Free;



    end;



    애기한테서는...

    그냥 폼클로즈시에..Action := CaFree;

    만 해주셔도 될듯...

    아빠는 생성시킨후에 손을 떼 주어야 할겁니다.

    흐음..저도 정확하게 아는게 아니라...

    참고로.. 폼스타일은 노말로 했습니다.

    정확히 저는 모달 폼이지만 그건 중요한게 아니라고 보고여.. 그럼 틀리면

    리플 달아주세여^^