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을 나만의 모양으로 만든다는 것은 흥미로운 일이며,
디자인을 업그레이드하는데 일조할 것입니다.
이건 만드는 방법에 관한 팁이므로
실제 작업은 각자 알아서 ^^;;
그럼 ...
|