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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[590] 나만의 패널을 만들어 보자.
김태선 [jsdkts] 8053 읽음    2006-04-05 00:38
TPanel은 컴포넌트 컨테이너로서 아주 훌륭합니다.
화면 디자인 잡을 때 가장 많이 쓰이는 컴포넌트중에 하나입니다.
하지만 모양이 너무 단순한게 흠입니다.


소스입니다. cpp 쪽은 코드가 하나도 없고 아래의 헤더만 보시면 됩니다.
TMyPenel 식으로 콤포넌트를 만들어도 되나,
아무래도 그렇게해서 팔레트에 등록시키면 모양이 마음에 안들어 수정할때 마다
계속 고치고 재 등록하려면 상당이 귀잖습니다.
그래서 표준 TPanel 로 디자인하고 이걸 내가 만드는 패널로 RunTime시에
살짝 바꾸는 기법을 사용했습니다.  이건 아래 팁 기사에 소개했습니다.
어쨌거나 중요한 것은 그런 컴포넌트를 만든다는 것이며,
그걸을 어떻게 적용하는가는 방법적인 문제입니다. 이건 각자가 알아서 하세요.
저는 이전 주제의 기사의 2번째 방법을 적용했는데,
가장 바람직한 것은 3번째 방법입니다.
물론 완전히 쓸만해지면 컴포넌트 팔레트에 등록해 쓰는게 더 편리하겠죠.
저 처럼 여러 컴에서 작업해야 해서 컴포넌트 일일이 설치하기 귀잖아하는 사람은 빼고 말이죠..  ㅡ..ㅡ;
//---------------------------------------------------------------------------

#ifndef MyPanelH
#define MyPanelH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
// 나만의 모양을 가진 패널 컴포넌트.

class TPanel : public Extctrls::TPanel
{
public:
    __fastcall TPanel(TComponent *Owner) : Extctrls::TPanel(Owner)
    {
    }
    // 새로운 모양을 만드려면 이렇게 Paint 메쏘드를 오버라이드하면 됩니다.
    virtual void __fastcall Paint()
    {
        Canvas->Brush->Color = Color;
        Canvas->RoundRect(0,0, Width,Height, 8,8);
    }
};
#define TPanel         ::TPanel
//---------------------------------------------------------------------------

class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TPanel *Panel1;
    TPanel *Panel2;
    TMemo *Memo1;
    TStatusBar *StatusBar1;
    TEdit *Edit1;
    TCheckBox *CheckBox1;
    TRadioButton *RadioButton1;
    TLabel *Label1;
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

동봉한 예제는 위 샘플로 만든 것입니다.
아주 훌륭한 컨테이너인 TPanel을 나만의 모양으로 만든다는 것은 흥미로운 일이며,
디자인을 업그레이드하는데 일조할 것입니다.

이건 만드는 방법에 관한 팁이므로
실제 작업은 각자 알아서 ^^;;

그럼 ...

+ -

관련 글 리스트
590 나만의 패널을 만들어 보자. 김태선 8053 2006/04/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.