Q&A

  • MDI에서 자식창을 모두 닫고 다시 실행하면 에러가...
MDI를 사용하는데 메뉴에서 자식폼을 호출하면 잘뜨는데

자식폼을 닫으면 메모리에서 해제를 해 주었더니

Action := caFree;



모조리 자식폼을 닫고 다시 자식폼을 불러오는데 에러가 납니다.

메뉴에서 불렀습니다.



그래서 메모리 해제를 않하고 자식창을 아이콘화 해봤는데

사라지는 것만 못해서...



닫으면 메모리에서 사라졌다가 다시 불러올 수는 없나요?

2  COMMENTS
  • Profile
    parkisu 2000.04.18 03:39
    mad wrote:

    > MDI를 사용하는데 메뉴에서 자식폼을 호출하면 잘뜨는데

    > 자식폼을 닫으면 메모리에서 해제를 해 주었더니

    > Action := caFree;

    >

    > 모조리 자식폼을 닫고 다시 자식폼을 불러오는데 에러가 납니다.

    > 메뉴에서 불렀습니다.

    >

    > 그래서 메모리 해제를 않하고 자식창을 아이콘화 해봤는데

    > 사라지는 것만 못해서...

    >

    > 닫으면 메모리에서 사라졌다가 다시 불러올 수는 없나요?



    우선 자식폼의 Close이벤트에





    Action:= caFree;

    child1:= nil; //자식폼의 이름





    이런 식으로 전역폼변수를 nil로 해주어 보십시오.

    폼생성시는





    if not Assigned(child1) then

    child1:= Tchild1.Create(self);

    child1.Show;



    이런 식으로 해보십시오.



    위에서 child1은 해당 폼을 참조하는 전역변수입니다. 유닛에

    var

    Form1:TForm1

    처럼 쓰여있는 부분말이죠.



    Action:= caFree해도 폼을 생성하면 참조했던 전역변수는 아직 객체가 생성된 메모리를

    가리키고 있을 수가 있다고 합니다.



    제 답변이 정확했는지 모르겠군요. 잘 안되시면 다시 질문 올리시길...



  • Profile
    DelChobo 2000.04.18 03:38
    mad wrote:

    > MDI를 사용하는데 메뉴에서 자식폼을 호출하면 잘뜨는데

    > 자식폼을 닫으면 메모리에서 해제를 해 주었더니

    > Action := caFree;

    >

    > 모조리 자식폼을 닫고 다시 자식폼을 불러오는데 에러가 납니다.

    > 메뉴에서 불렀습니다.

    >

    > 그래서 메모리 해제를 않하고 자식창을 아이콘화 해봤는데

    > 사라지는 것만 못해서...

    >

    > 닫으면 메모리에서 사라졌다가 다시 불러올 수는 없나요?



    안녕하세요 ^.^

    .Dpr 화일을 직접 수정하시거나 프로젝트 메뉴에서 자식폼들을

    시작시 생성하지 않도록 수정해 주시고

    메뉴에서 자식폼을 불러오실때 폼을 Create해주시면 됩니다.



    폼을 닫을때 Action := caFree; 를 해주시고요.



    안되시면 메일 주세요



    좋은 코딩 하십시요 ~~