C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[22884] Re:Re:Re:일단 감사드립니다.. 추가 질문 입니다.
조준회 [] 657 읽음    2002-11-27 12:15

무슨 내용인지 질문내용을 이해하기가 힘들군요..

그러나 답은 변수통용범위에 대한 내용인걸로 보입니다.

순수하게 아래 코드만 보더라도..

   TF_ITEM *subForm = new TF_ITEM(Application);     // 이렇게 주면 에러는 없지만
              subForm->DPNO->Text      = SG1->Cells[0][Row];   // 값이메인폼으로
              delete subForm;     


1라인에서. 객체를 생성시켰고.
2라인에서 데이터를 적용시켰고..
3라인에서 객체를 해제했습니다.

객체가 자체가 해제되었는데..
객체내의 변경된 데이터가 남아 있겠습니까?.

위 내용만 가지고는 어떤 의도로 저런 코드를 사용했는지 이해가 되지 않아서 ..
더이상의 답변은 힘들지만..
변수의 통용범위에 대한 이해를 하시면.. 풀수 있을겁니다.



수빈 님이 쓰신 글 :
: 바로 답변 드린점 감사드립니다.
: 제가 똑같은 상황인줄알고 질문 한 것이 다른 상황이군요 ㅠ.ㅠ
: 제가 잘못 설명한것 같습니다.
: 메인폼은 실제로는 F_MAIN입니다.. 이것만 auto-create 되고요
: F_ITEM는 실제로는 AVailabled 입니다.그러니까 쉽게 말씀드리자면
: 메인폼에서 F_ITEM폼을 동적으로 생성 시켰고요
: 생성된 F_ITEM폼에서 다시 S_IDPN폼을 불러 온것입니다.
:
: 그래서 실제로 아래처럼 쓰더라도 에러가 나더라구요 ㅠ.ㅠ 
: 다시 답변 부탁드립니다.
:
:
:
:
:
: 조준회 님이 쓰신 글 :
: :
: :    TF_ITEM *subForm = new TF_ITEM(Application);     // 이렇게 주면 에러는 없지만
: : :               subForm->DPNO->Text      = SG1->Cells[0][Row];   // 값이메인폼으로
: : :               delete subForm;     
: :
: :
: : 당연히 위와 같이하면.. 메인폼으로 데이터가 가지 않습니다.
: : 위 코드는 메인폼과 같은 새로운 폼을 하나 생성시키고..
: :
: : 새로로 생성된 메인폼에 데이터를 집어 넣는 것입니다.
: :
: : 님이 원하는 폼이 아닌..새로 생성된 메임폼과 같은 폼 말 입니다.
: :
: : item.h에 보시면..extern package로 하나 선언된것이 있을겁니다.
: : 그 폼이 메인폼의 객체를 전역으로 선언한것입니다.
: :
: : auto-create되면.. 전역으로 선언된 포인터에 메모리를 할당하게됩니다.
: :
: : 위 코드만 가지고 생각해보면.. 아마 메인폼의 이름은 F_ITEM이걸로 생각됩니다.
: : 그럼 F_ITEM->DPNO->Text = ... 으로 하면 됩니다.
: :
: :
: : 이 문제는 변수의 통용범위 규칙을 생각해보시면..
: : 풀수 있는 문제입니다.
: :
: :
: : 수빈 님이 쓰신 글 :
: : : 회원 가입도 안돼 있었네요 게시판을 자유롭게 다니다 보니까..
: : : 플밍하는데 이곳의 도움을 무척이나 많이 받고 있답니다.. 일단 감사..
: : : 제가 알고 싶은 것은...
: : : 일단 두개(사실은 여러개)의 폼이 있습니다.(SDI)
: : : 프로젝트 옵션 부분에 메인폼은 auto 이면서 나머지 폼들은 AVailabled입니다.
: : : 여태까지는 전부 모든폼을 auto시켰거든요 그러니까 많은 리소스(컴터)잡아먹더군요.
: : : 그래서 SDI폼이면서 다른폼을 연동 시킬때 동적으로 생성 시켜야 겠다 하고 다시 작업을
: : : 하는데..메인폼에서 동적으로 생성시킨 폼은 메인폼에서 준 데이타를 갖을수 있더군요
: : : 그런데 새로 생긴 폼에 있는 데이타를 다시 가져 올려고 하니 아무런 값을 갖고 올수 없더군요
: : : ㅠ.ㅠ ...
: : : 원인을 알고 싶고 해결 하고 싶습니다... 하단 소스도 봐주세요... 
: : : //--------------------------------------------------------------------------
: : : #include "item.h"     // 메인폼 
: : : #include "SDPN.h"     // 동적생설될 폼
: : :
: : : //---------------------------------------------------------------------------
: : : #pragma package(smart_init)
: : : #pragma resource "*.dfm"
: : : TF_ITEM *F_ITEM;
: : : //---------------------------------------------------------------------------
: : : __fastcall TF_ITEM::TF_ITEM(TComponent* Owner)
: : :     : TForm(Owner)
: : : {
: : : }
: : : //---------------------------------------------------------------------------
: : : void __fastcall TF_ITEM::DPNOKeyDown(TObject *Sender, WORD &Key,
: : :       TShiftState Shift)
: : : {
: : :    
: : :         TS_IDPN *subForm = new TS_IDPN(Application);   // 게시판 돌아다니면서 찾은부분.
: : :         subForm->FLAG->Caption = 1;
: : :         subForm->ShowModal();
: : :         delete subForm;
: : :    
: : : }
: : :
: : : //------------------------------------------------------------------------------
: : : 윗부분은 동적으로 폼을 생성시키면서 라벨에 캡션을 1로 주는 겂니다.. 그럼 동적으로
: : : 생성되는 폼은 정확하게 값을 갖고있죠..
: : :
: : : 그럼 하단 부분은 새로 생성된 폼입니다.
: : :
: : : //---------------------------------------------------------------------------
: : : #include <vcl.h>
: : : #pragma hdrstop
: : :
: : : #include "SDPN.h" // 자신폼..
: : : #include "item.h" // 메인폼
: : : //---------------------------------------------------------------------------
: : : #pragma package(smart_init)
: : : #pragma resource "*.dfm"
: : : TS_IDPN *S_IDPN;
: : : //---------------------------------------------------------------------------
: : : __fastcall TS_IDPN::TS_IDPN(TComponent* Owner)
: : :     : TForm(Owner)
: : : {
: : : }
: : :
: : : //---------------------------------------------------------------------------
: : :
: : : void __fastcall TS_IDPN::SG1SelectCell(TObject *Sender, int Col,
: : :       int Row, bool &CanSelect)
: : : {
: : :
: : :         if (FLAG->Caption == 1)   //조건문 안으로 들어갑니다.
: : :         {
: : :               TF_ITEM *subForm = new TF_ITEM(Application);     // 이렇게 주면 에러는 없지만
: : :               subForm->DPNO->Text      = SG1->Cells[0][Row];   // 값이메인폼으로
: : :               delete subForm;                                  // 안가요
: : :         }
: : : }
: : : //---------------------------------------------------------------------------
: : :
: : : 제가 알고 싶은것은 동적 생성된 폼의 데이타를 다시 메인폼으로 가지고 오는 것입니다..
: : : 답변 부탁드립니다.
: : :
: : :
: : :

+ -

관련 글 리스트
22879 /* 질문 */ 두개의 폼간의 데이타 연동 ...검색을 다 찾아 보았는데모르겠어요! 수빈 856 2002/11/27
22892     부모폼의 포인터만 알면 쉽게 부모폼의 컨트롤에 접근할 수 있죠. Julien 1078 2002/11/27
22895         Re:감사합니다... 제가 찾는 답이었습니다... 꾸벅 (내용무)^.^ 수빈 876 2002/11/28
22882     Re:/* 질문 */ 두개의 폼간의 데이타 연동 ...검색을 다 찾아 보았는데모르겠어요! 조준회 1180 2002/11/27
22883         Re:Re:일단 감사드립니다.. 추가 질문 입니다. 수빈 650 2002/11/27
22884             Re:Re:Re:일단 감사드립니다.. 추가 질문 입니다. 조준회 657 2002/11/27
22886                 Re:Re:Re:Re:일단 감사드립니다.. 추가 질문 입니다. 수빈 670 2002/11/27
22887                     Re:Re:Re:Re:Re:일단 감사드립니다.. 추가 질문 입니다. 조준회 705 2002/11/27
22918                         Re:Re:Re:Re:Re:Re:일단 감사드립니다.. 추가 질문 입니다. 질문이너무많아서.. 824 2002/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.