|
###### DataStruct.h #########
struct SCREEN {
TForm* pScreen[30];
TForm* pButton[30];
int i;
};
struct SCREEN SCREEN_LIST;
------------------------------------------------------------------
위에 DataStruct.h 파일에
struct SCREEN SCREEN_LIST 이렇게 변수가 선언되어있습니다.
이 DataStruct.h 파일을 TMain에서도 include하고 TfrmSubbutton 에서도 include하면
waring이 뜨지 않던가요?
두군데 선언되있다느니 어쩌느니.. 하면서 waring이 뜰겁니다.
다시 말해 변수를 header에 선언하고 그 header를 여러군데에서 include하면 문제가 됩니다.
DataStruct.h 파일에는
extern struct SCREEN SCREEN_LIST; 이렇게 참조해 두시구요
다른 cpp파일에 실제 선언은
struct SCREEN SCREEN_LIST; 을 해 보십시요
그러면 될거예요
그럼..
걸음마 님이 쓰신 글 :
: 생성한 폼을 TMain에서도 보여(show())주고
: 다른 서브버튼 폼을 만들어서 그 폼에서도
: 다른 폼을 불러오려고 합니다.
: 그래서 헤더파일을 하나 만들어서 구조체를 만들었습니다.
: 그 구조체에 아래와 같이 각각의 폼의 포인터를 배열에 넣습니다.
:
:
: ###### DataStruct.h #########
:
: struct SCREEN {
: TForm* pScreen[30];
: TForm* pButton[30];
: int i;
: };
:
: struct SCREEN SCREEN_LIST;
:
: ###### TMain 부분 ##########
: __fastcall TMain::TMain(TComponent* Owner)
:
: void __fastcall TMain::InitForm()
: {
: SCREEN_LIST.pScreen[0] = new Tfrmfuntion(pnlMain);
: SCREEN_LIST.pScreen[0]->Parent = pnlMain;
:
: SCREEN_LIST.pButton[0] = new TfrmSubbutton(pnlRight);
: SCREEN_LIST.pButton[0]->Parent = pnlRight;
:
: SCREEN_LIST.pScreen[1] = new TfrmRecipe(pnlMain);
: SCREEN_LIST.pScreen[1]->Parent = pnlMain;
:
: SCREEN_LIST.pButton[1] = new TfrmRecipeSubbutton(pnlRight);
: SCREEN_LIST.pButton[1]->Parent = pnlRight;
:
:
: }
: 이렇게 버튼을 눌렀을때 폼을 보여줍니다.
: void __fastcall TMain::ToolButton2Click(TObject *Sender)
: {
:
: SCREEN_LIST.pScreen[0]->Show();
: SCREEN_LIST.pButton[0]->Show();
: }
:
: 똑같이 다른 폼에서 폼을 보여주기위해 다음과 같이 합니다...
: ####### TfrmSubbutton 부분 ################
: void __fastcall TfrmSubbutton::ToolButton1Click(TObject *Sender)
: {
: if(SCREEN_LIST.pScreen[1] != NULL)
: SCREEN_LIST.pScreen[1]->Show();
:
:
: }
:
: 근데 if문에서 참이 되지 않아 그냥 나가버립니다.
: TMain부분에서 구조체에 값을 넣어 줬는데 왜 if문에서 걸리지 않고 나가버리는지 모르겠습니다.
: 고수님들의 답변 부탁드립니다.
|