C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 FAQ
C++Builder Programming FAQ
[46] [BCB] 메인창이 뜰때 폼을 Docking상태로 뜨게 할 수 있을가요?
김성진.kark [kark] 19693 읽음    2002-01-22 19:01
>> 질문 : .으.라.차.차.(baepower)님 ( bcbdn C++Builder Q&A 14827번 )


"메인창이 뜰때 폼을 Docking상태로 뜨게 할 수 있을가요?"

처음 프로그램을 실행할때 2개 혹은 3개의 폼을 띄우고 싶습니다..

헌데 이 폼들은 메인폼에 Docking된 상태로 띄우고 싶거든요...

방법좀 알려주세요~~~ ^^


>> 답변 : 간단하게 해결할 수 있는 방법은 ManualDock 메쏘드를 사용하는 것입니다.

간단한 예제를 보여드리져.

폼하나에 패널을 두개 두고, 실행시 각 패널에 2개의 폼을 Docking 시키는 예입니다.

1. New Application을 하시구요. 기본으로 저장을 하시길.(Unit.cpp)

2. Form1 위에 Panel1, Panel2를 놓구요.

   Panel1과 Panel2의 property 중 DockSite를 'true'로 합니다.

3. 이제 New Form을 두번하셔서, Form2, Form3를 생성합니다.

4. Form2, Form3의 property 중 DragKind = dkDrag, DragMode = dmManual 로 각각

   설정합니다.

4. 마지막으로 Unit1.cpp 에 아래와 같이 코딩합니다.

#include "Unit1.h"
#include "Unit2.h"    // 추가합니다.
#include "Unit3.h"    // 추가합니다. 

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
   Form2->Show();
   Form3->Show();
   Form2->ManualDock(Form1->Panel1, NULL, alClient);
   Form3->ManualDock(Form1->Panel2, NULL, alClient);
}
//---------------------------------------------------------------------------

대충 감이 오시져? 동적생성을 하셔도 되구 활용하기에 따라서 여러가지로 쓰일수

있습니다.

TControl::ManualDock

(원형) bool __fastcall ManualDock(TWinControl* NewDockSite, TControl* DropControl, TAlign ControlSide);

(상세) 수동적으로 dock 하기위해 ManualDock를 사용한다. ManualDock는 현재 도킹되어

있는 dock site로부터 control을 분리하고, 다른 dock site에 control을 도킹한다.

NewDockSite는 control의 새 dock site이다.

DropControl은 drop되는 새 dock site내의 컨트롤이다. 예를 들면 Page Control에 Docking

을 하면, DropControl은 Tab Sheet일 것이다. (Form이라도 Page Control에 Docking되면 Tab

Sheet가 되고 만다)

ControlSide는 dock될 control의 DropControl 또는 (DropControl이 NULL이라면)NewDockSite의

side를 결정한다. 이러한 값은 dock site의 GetDockEdge 메쏘드를 호출함으로써 알 수 있다.




+ -

관련 글 리스트
46 [BCB] 메인창이 뜰때 폼을 Docking상태로 뜨게 할 수 있을가요? 김성진.kark 19693 2002/01/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.