(추가)
쓰고 다시보니 PageControl을 원하시는 거였네요..ㅎㅎ
뭐.. 비슷하지 않을까요? ^^;;
---------------------------------------------------
(원래글)
비주얼씨에서 하던대로 하시면 됩니다. ^^;;
10년전에 위자드 폼 만든다고 삽질하던게 생각나네요.
코드 나갑니다. ~
// 헤더파일입니다.
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTabControl *TabControl1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall TabControl1Change(TObject *Sender);
private: // User declarations
TForm* m_pTabForms[3]; // 탭에 해당하는 폼의 포인터를 저장할 배열입니다.
TForm* m_pCurrTabForm; // 현재 활성화된 탭(폼)을 가리키는 포인터입니다.
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
// 소스입니다.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
m_pTabForms[0] = new TForm2(NULL);
m_pTabForms[0]->Parent = TabControl1;
m_pTabForms[0]->BorderStyle = bsNone;
m_pTabForms[0]->Align = alClient;
m_pTabForms[0]->Show(); // 첫번째 탭에 해당하는 폼을 디폴트로 활성화합니다.
m_pTabForms[1] = new TForm3(NULL);
m_pTabForms[1]->Parent = this->TabControl1;
m_pTabForms[1]->BorderStyle = bsNone;
m_pTabForms[1]->Align = alClient;
m_pTabForms[2] = NULL;
m_pCurrTabForm = m_pTabForms[0]; // 현재 활성화된 폼을 저장하구요.
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
// 종료하면서 동적으로 생성한 폼을 해제합니다.
for(int i = 0; i < 3; i++) {
if(m_pTabForms[i]) {
delete m_pTabForms[i];
m_pTabForms[i] = NULL;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TabControl1Change(TObject *Sender)
{
// 탭이 바뀔때 현재 활성화된 폼을 닫고 탭에 해당하는 폼을 보여줍니다.
Index = ((TTabControl*)Sender)->TabIndex;
if(m_pCurrTabForm) {
m_pCurrTabForm->Close();
m_pCurrTabForm = NULL;
}
if(m_pTabForms[Index]) {
m_pTabForms[Index]->Show();
m_pCurrTabForm = m_pTabForms[Index]; // 현재 활성화된 폼을 저장합니다.
}
}
// Form2, Form3을 Project-Option-Application에서 Auto-Create Form 목록에서 빼줘야겠죠. :->
//---------------------------------------------------------------------------
도움이 되셨길 빕니다.
ben 님이 쓰신 글 :
: 안녕하세요? 가입하고 처음으로 글을 쓰게 되었습니다.
: C++ 완전정복에서도 많은 도움 얻고 있습니다.
: MFC쪽만 하다가 C++빌더 쪽으로 넘어온지 얼마 안되었습니다.
: 생소한 것도 많지만, 하나하나 알아가는 중입니다.
:
: 이제 어느정도 적응이 되어서 Form SDI 환경에서 MiniProject 를 진행중입니다.
: MFC 에서 사용하던 버릇때문인지..
:
: TpageControl 에서 각 Page 마다 CPP를 분리해서 사용하고 싶습니다.
: 불가능은 없을 것 같은데, 어떻게 해야할지 모르겠군요.
:
: 폼에 TpageControl 을 붙이는 순간 종속적이니.. ㅎㅎ;;;
: MFC에서는 다이얼로그를 따로 만들어서 판에 붙이는 방식으로 했었는데...
:
: 궁금합니다.
:
: 답변주시면 감사하겠습니다.
: TpageControl 로 검색해서 찾아보니, 이런 질문은 없는듯해서;; 과감히 올립니다. 큭;;
|