|
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; // 안가요
: }
: }
: //---------------------------------------------------------------------------
:
: 제가 알고 싶은것은 동적 생성된 폼의 데이타를 다시 메인폼으로 가지고 오는 것입니다..
: 답변 부탁드립니다.
:
:
:
|