|
아마 수빈님이 잘 이해가 안되시는가 본데..
그럼 해더에다가 이중포인터를 설정해놓고 그걸로
동적으로 생성된폼에서 접근하는 것도 방법이라고 생각하거든요..
예를 들어서
TTreeView **test;
이렇게 해더에서 정의해놓고..
메인폼에서
*test = TreeView1->Selected;
이렇게 할당해놓고...
동적으로 생성된 폼에서
(*test)->Text = "냠냠";
갯수가 많다면
*test로 할당하는 부분만 test[i]로 배열을 포문으로 돌려서 할당시키도 되겠지요....
이렇게 해놓으면 *test라는 것은 전역으로 항상 메인폼의
TTreeView 의 노드를 절대적으로 주소값을 갖고 가르키게 되니까.
어디에서도
(*test) 로 그 노드에 접근할수 있을거라 생각합니다.
노드라함 리스트뷰에서 item이라고도 할수있는 거라고....
되도록 쉽게 설명드렸는데...ㅡㅡㅋ 저도 같이 배우는 입장이라..
뭐 빨리쓰느라...^^;;
그럼 즐푸하세요....
참...할당한 *test는
사용이 끝나면(?)
delete test;
요걸로 메모리에서 풀어줘야 합니다.
조준회 님이 쓰신 글 :
: 객체를 동적생성한것과는 아무런 상관이 없습니다.
:
: 동적생성이라도.. 일단 생성된 후라면.. auto create와 완전히 동일합니다.ㅡㅡ
: (auto create라는 것도 결국 동일한 과정으로 생성됩니다.
:
: 다만 사용자가 코딩을 하지 않을뿐.. 컴파일러가 알아서 그 과정을 대신하는
: 코드를 만들어냅니다.)
:
: 그러나 해제한후라면.. 당연히 문제가 생깁니다.
: 계속 사용을 해야 하는 객체는 프로그램에 종료할때까지 해제를 해서는 안됩니다.
: (auto create된 폼이라도.. 해제시키면.. 똑같은 문제가 발생합니다.)
:
: 제발 변수 통용범위에 대한 내용을 책에서 찾아보도록 하세요..
:
: (위 내용은.. 변수를 선언한후 그 변수를 사용 할 수 있는 범위와 관련된 내용입니다.
: 어느책이건.. 변수나 함수 관련된 부분에 약간이라도 반드시 언급을 하는 아주 중요한
: 내용입니다.)
:
:
:
: 수빈 님이 쓰신 글 :
: : 에구 잘 모르니까 답변 을 해주시는데도 뭐라 말씀드리기 힘들군요..
: : 말씀해주신 아래코드 부분은 이해를 했습니다.
: : F_ITEM의 폼에 값을 다시 주고 싶은데..
: : F_ITEM->DPNO->Text = SG1->Cells[0][Row];
: : 이렇게 주면 에러메세지가 뜹니다.
: : 이유는 F_ITEM역시 메인폼에서 동적으로 생성된 폼이거든요...
: :
: : 갑자기 생각난것인데 F_ITEM폼역시 객체를 해제했는데 그래서 값이 안들어갈까요?
: : 쓸데 없는 질문한것 같아서 지송해요...ㅠ.ㅠ
: :
: : 하여간 관심가져주셔서 감사합니다.
: :
: : :
: : : 무슨 내용인지 질문내용을 이해하기가 힘들군요..
: : :
: : : 그러나 답은 변수통용범위에 대한 내용인걸로 보입니다.
: : :
: : : 순수하게 아래 코드만 보더라도..
: : :
: : : TF_ITEM *subForm = new TF_ITEM(Application); // 이렇게 주면 에러는 없지만
: : : subForm->DPNO->Text = SG1->Cells[0][Row]; // 값이메인폼으로
: : : delete subForm;
: : :
: : :
: : : 1라인에서. 객체를 생성시켰고.
: : : 2라인에서 데이터를 적용시켰고..
: : : 3라인에서 객체를 해제했습니다.
: : :
: : : 객체가 자체가 해제되었는데..
: : : 객체내의 변경된 데이터가 남아 있겠습니까?.
: : :
: : : 위 내용만 가지고는 어떤 의도로 저런 코드를 사용했는지 이해가 되지 않아서 ..
: : : 더이상의 답변은 힘들지만..
: : : 변수의 통용범위에 대한 이해를 하시면.. 풀수 있을겁니다.
: : :
: : :
: : :
: : :
: :
: :
: :
|