|
아래 smleelms 님의 말씀데로 해당폼의 해더를 참조하고 계신경우의 답변입니다.
웬지 Show, Hide의 질문같았는데 Create, Delete류의 질문이군요...
Form1에서 Form2를 생성했다면 Form2의 해더는 Include가 되어있는 상태겠지요
만약 TForm2 *Form2; 라고 선언되어있다면
Form1의 생성자에서 Form2 = NULL;을 해주시구요
Form2 = new TForm2(this);
하시면 Form2의 값은 메모리 번지값이 됩니다.
Form2가 Close 될때나 Destroy될때 Form1->Form2 = NULL을 해주시면 해결 될 수 있을거 같네요
이때 Form1에서 delete Form2; 같은 문장은 없애야하며
Form2의 OnClose이벤트에서 Action = caFree; 를 해주시면 메모리 누수는 없을겁니다.
보신바와같이 Form2라는 값 말고도 bool 값등의 변수를 이용하여
해당 폼의 존재나 상태를 확인 하는 방법도 있으니
한번더 생각해 보시구요
궁금이 님이 쓰신 글 :
: smleelms 님이 쓰신 글 :
: : 해당폼의 헤더파일을 참조하고 계시다면 그냥 "Visible" 속성만 보셔도 됩니다.
: :
: : 궁금이 님이 쓰신 글 :
: : : 제가 여러가지 Form을 합쳐서 많이 쓰거든요..
: : : 그래서 Form1에서 Form2가 Show상태인지 Close 상태인지를 알수있나 해서요..
: : : if문으로 Form이 Show상태인지 Close 상태인지를 알수 있는 법좀 알려주세요..
: : : 고수님들 부탁................^^;
:
: if(Form1->Visible==true){
: Form1->Close();
: }
: 이런식으로 했더니 안되더군요 아직 생성이 안된 Form이라 오류가 나오는거 같더군요.
: 메모리에 쌓이지 않게 하려구 사용한 Form은 Close시키려구 하거든요..
: 이런식으로 했더니 안되더라구요...
: 제가 뭘 잘못생각하는지.........
: 다시 한번 알려주세요
: 감사합니다..
|