|
그렇다면 아마 이런 식으로 하면 해결될듯하군요.
//헤더파일처리부입니다.
class SendClass
{//보낼 클래스
public:
int nSendCnt;
String sSendString;
void CntUp(void); //함수처리
};
class TForm1 : public TForm
{
**중략**
public: // User declarations
SendClass SClass; //위에서 정의한 클래스를 폼1안에서 선언.
};
//폼1에서의 코딩
void SendClass::CntUp(void) //클래스에 선언된 함수처리부분
{
nSendCnt++;
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
SClass.nSendCnt = 1; //폼1의 헤더에서 선언된 SClass에 값을 넣고
SClass.sSendString = "aaa";
}
//폼2에서의 코딩
void __fastcall TForm2::Button4Click(TObject *Sender)
{
Edit2->Text = Form1->SClass.sSendString; //폼1의 SClass를 가져온다.
Form1->SClass.CntUp(); //정의되어있는 함수불러다쓰기
Edit1->Text = IntToStr(Form1->SClass.nSendCnt);
}
이런식을 생각하신것 같은데 맞나요?
김달신 님이 쓰신 글 :
: 답변 정말로 감사드립니다.
:
: 제가 원래 할려고 하는 바는 ClassA에 모든 변수(Array포함)를 정의하고 MainForm에서 이 ClassA에 엑세스해서
: 데이터를 여러 멤버함수로 처리하여 ClassA의 변수에 저장을 하고 이를 newForm에서 그 값을 쓰겠다는 것입니다.
:
: newForm에서는 다시 MainForm의 멤버함수에 엑세스하여 일부 변수값들(ClassA의)을 계산하고, 이 변화된 값들을 다시 MainForm으로 보내겠다는 이야기인데.. 문제는 ClassA의 변수들에 저장이 되어 이를 newForm에서 쓸수 있을거라 생각을 했는데 이 ClassA의 변수들이 마치 로컬 변수처럼 행동을 하더라는 이야기입니다. 따라서 newForm에서 체크를 해 보면 MainForm에서 멀쩡이 어사인된 값이 newForm에서는 모두 NULL값으로 되어버리더군요.
:
: 사실 newForm의 Text box나 Line들에 있는 값들은 Property값이라서인지 MainForm에서 바로 불러들일 수 있었거던요. 그래서 같은 식으로 작동을 할거라 여겼는데...
:
: 이는 제가 아마 A폼에서 B폼으로 자료값을 넘기거나 B폼에 있는 함수를 쓸려고 하는 문제를 포함하여 class의 변수처리과정에 대한 이해가 부족하여 생긴 것 같습니다.
:
:
: 2HB 님이 쓰신 글 :
: : 으음. 제가 아직까지 Class를 직접 생성하고 수정하고, 뭐 이런 것에 약해서 정확한 이해는 못했습니다만.
: : 대강 이런 식의 프로그램을 말하시는게 아닐까..하고 대강 짜봤습니다.
: :
: : 뭐. 참조하실 데이터를 확실하게 Form의 header파일의 public부분에 넣어두셨는지 확인하시고, 만약에 코드안에 넣으셨으면 자연스럽게 지역변수로 인식하게 될겁니다. 아마... 근데, 컴파일도 억세스도 잘 되면 이런 문제는 아닐성도 싶구요.
: :
: : 그저 직접 프로그램을 보기 전엔 도통 모르겠군요 =_=;;
: :
: : 김달신 님이 쓰신 글 :
: : : MainForm과 여기서 호출하는 NewForm이 있습니다.
: : : 두 폼의 헤더파일을 상호 인클루드 시켰구요.
: : : MainForm에서 버튼클릭시 호출폼을 show()로 호출하면 NewForm이 나타납니다.
: : :
: : : 그런데 MainForm에서 계산된 데이터를 NewForm에서 참조한다던지, NewForm에서 계산된 데이터를 MainForm으로 보내면 그 값이 0으로 되어버리더군요.
: : : MainForm과 NewForm 모두 별도의 Class에 정의된 변수들을 불러서 사용을 하였구요.
: : : 데이터 처리 함수는 모두 MainForm에 정의를 하였습니다.
: : :
: : : Compile도 멀쩡히 되고 Access에러도 잡았는데 값들이 넘어가질 않는군요.
: : :
: : : 이거 어떻게 해야 할지 난감하군요. 역시 초짜는 어쩔 수 없나 봅니다.
: : : 고수님들의 도움을 절실히 구합니다.
|