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
[52316] Re:Re:미리 만들어둔 Fream을 동적으로 생성 하여 TNotebook에 넣기가....
모나리자 [] 1548 읽음    2008-02-18 16:38
장성호 님이 쓰신 글 :
: 음...
: TNotebook은 TPageControl과 비슷합니다.
:
: 1. TPageControl 에 TabSheet를 추가하고 그위에 control을 동적으로 올릴때 
: Control의 Parent를  무엇으로 설정해줄까요?  TPageControl 일까요?
: 아닙니다. TTabSheet입니다.
:
: 마찬가지로 TNotebook도 동적으로 control을  activepage에 올리려면?
: TNotebook이 아닌 activepage의 control을 parent로 설정해 줘야 합니다.
:
: 2. 그럼 TNotebook에 control이 올라가는 컨테이너 컨트롤의 이름은 뭘까요?
: TNotebook에 Button하나 올리고 Click이벤트에 아래오 같이 코딩해보세요
:
: void __fastcall TForm1::Button5Click(TObject *Sender)
: {
:     String str=Button5->Parent->ClassName();
:     ShowMessage(str);
: }
: Parent control의 classname은 TPage 로 나옵니다.
:
: 즉 동적으로 control을 new해서 parent를 설정해줄때 TPage형으로 해줘야 하는것입니다.
: 그런데 TNotebook에는 각 page에서   TPage를  알수 있는 방법(Method)가 없습니다.
:
: 3. 그래서 TNotebook의 vcl소스를 봤습니다.
: TNotebook = class(TCustomControl)
:   private
:     FPageList: TList;
:     FAccess: TStrings;
:     FPageIndex: Integer;
:    ...
: 위와같이 정의되어있더군요
: 코드를 보면 TPage는 TNotebook의 FPageList에 들어있습니다.
: 그런데 FPageList는 private멤버죠
: 그냥은 접근이 안되죠
:
: 4. 하지만 private멤버라도 얼마든지 접근할수 있습니다.
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=723
: 위 링크에 private멤버 접근하는 몇가지 방법에 대해 소개 해 놓았습니다.
:
: 5. 결론적으로
:    님의 코딩에서 Frame의 Parent만  TNotebook의 FPageList에 있는 TPage 컨트롤로 설정해주시면 됩니다.
:
:
: 그럼..
:
:
:
: 모나리자 님이 쓰신 글 :
: : 안녕 하세요.
: : 몇칠째 찾아 보고 연구 해보고 했지만 잘 돼지 않아서 이렇게 글을 올리 됩니다.
: : 미리 생성해둔 Fream을 동적으로 생성 해서 TNotebook 페이지에 Fream을 넣으려고 합니다.
: : 제가 만든 예제 소스를 보여 드리자면...
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Notebook_Add(AnsiString strPageName)
: : {
: :     int iPageIndex;
: :
: :     Notebook->Pages->Add(strPageName);
: :     iPageIndex = Notebook->Pages->IndexOf(strPageName);
: :     Notebook->PageIndex = iPageIndex;
: :
: :     TFrame2 * pNewFrame = new TFrame2(NULL);
: :     pNewFrame->Align = alClient;
: :     pNewFrame->Parent = Notebook;                             
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : //
: :     Notebook_Add("A");
: : }
: : //---------------------------------------------------------------------------
: : 이런 식입니다...
: : Button1을 클릭 했을 경우 Notebook_Add 함수를 호출 합니다.
: : Notebook_Add 함수에서 페이지를 추가 하고 IndexOf 함수로 페이지 이름을 찾아 인덱스를 설정 합니다.
: : 그리고 동적으로 Fream을 생성 하여 Notebook에 Fream에 넣습니다..
: :
: : 제 이론이 맞는지 알수 없지만..저렇게 하면 될꺼 같은데 잘 돼지 않습니다.ㅠ
이렇게 자세 하게 설명 해주셔서 고맙습니다.
한번 만들어 보고 소스를 올려 보도록 하겠습니다.ㅎㅎ)휴...오늘은 완성을 해야 할텐데;;

+ -

관련 글 리스트
52312 미리 만들어둔 Fream을 동적으로 생성 하여 TNotebook에 넣기가.... 모나리자 1153 2008/02/18
52315     Re:미리 만들어둔 Fream을 동적으로 생성 하여 TNotebook에 넣기가.... 장성호 1358 2008/02/18
52316         Re:Re:미리 만들어둔 Fream을 동적으로 생성 하여 TNotebook에 넣기가.... 모나리자 1548 2008/02/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.