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

델파이 팁&트릭
Delphi Programming Tip&Tricks
[171] 팁! 폼을 패널에 집어넣기~!
박지훈.임프 [cbuilder] 17697 읽음    1999-06-04 00:00
임프랍니다..
오늘도 재미있는 팁 하나를 가지고 상쾌한 하루를 시작합시다.

오늘의 팁은, 패널에(혹은 다른 윈도우컨트롤에) 폼을 집어넣기 입니다.
이 팁의 핵심은 간단합니다. 폼도 TControl의 자손이기 때문에, 윈도우컨트롤에
집어넣을 수 있습니다. 하지만, 이 간단한 원리의 응용은 생각보다 쇼킹합니다.
일단.. 코드를 작성해봅시다.

Form1과 Form2, 두개의 폼을 가진 프로젝트를 하나 작성합시다.
그리고 Form1에는 패널을 하나 놓습니다. 크기는 좀 큼직하게.. 얼라인을 alClient로
만들어도 좋겠네요. 하지만, 버튼을 하나 놔야 하니까 약간의 공간이 남게 합시다.
그리고 버튼을 하나 놓고.. OnClick 핸들러를 작성합시다.

// C++ 코드
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form2 = new TForm2 (Panel1);
    Form2->Parent = Panel1;
    Form2->Left = 0;
    Form2->Top = 0;
    Form2->Visible = true;
}


// 델파이 코드
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Panel1);
  Form2.Parent := Panel1;
  Form2.Left := 0;
  Form2.Top := 0;
  Form2.Visible := true;
end;


당연히 Form2는 프로젝트 옵션에서 Available로 옮겨놔야겠죠? 동적으로 생성하니까.
그리고.. Form2의 OnClose 핸들러를 작성합시다. 간단히~

// C++ 코드
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree;
}


// 델파이 코드
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

동적으로 생성하니까, 닫을때 자동으로 날려버릴수 있도록 하는거죠.

자아.. 이걸로 끝입니다. 간단하죠? 실행해보세요.
폼이 패널 안에 뜹니다. 무슨 MDI처럼. 하지만 MDI는 아니죠.

흠.. 재미있긴 한데 이게 뭔 소용이 있냐구요? 소용이 있죠~!
폼의 BorderStyle을 bsNone으로 놓는다고 생각해봅시다.
그럼... dfm으로 작성한 폼을, 마치 새로운 컨트롤인것처럼 써먹을 수 있죠~
패널에도 놨으니, 페이지컨트롤의 탭시트에도 폼을 얹어놓을수 있겠죠?
그럼 탭시트에 폼디자이너로 미리 디자인된 컨트롤들을 올려놓을 수 있는거죠.
아주 여러가지로 응용이 되겠죠? ^^

그럼, 도움되시길 바라면서, 이만...



독립문에서 임펠리테리였습니다.
케일라 리 [kayla86]   2010-08-23 05:40 X
이제 갓 델파이입문자인데 정말 좋은 팁이군요^^잘 사용하겠습니다.

+ -

관련 글 리스트
171 팁! 폼을 패널에 집어넣기~! 박지훈.임프 17697 1999/06/04
(링크)     C++Builder Tip'N Tricks > 팁! 폼을 패널에 집어넣기~!
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.