그냥 3번째까지만 하고 안할려고 하다가
걍 4번째 방법을 씁니다.
이 방법은 전술한 바와 같이 델마당 양병규님의 델파이쪽 방법을 C++빌더에서 구현하는 방법입니다.
헤더파일만 올립니다.
FindComponentClass이용하는 방법으로 설명은 아래 3번째 방법을 보세용.
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
// 새로 패널 컴포넌트를 정의해서 만듭니다.
class TMyPanel : public TPanel
{
private:
TColor NewColor;
public:
__fastcall TMyPanel(TComponent *Owner) : TPanel(Owner)
{
Color = clRed; // 패널을 생성하면 기본 바탕이 붉은 색이 되게 합니다. 왜냐구요. 대~한민국~
}
void color() // 이렇게 유저 함수를 추가하는 것도 아무 문제 없습니다.
{
Color = clBlue;
NewColor = Color;
}
};
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TPanel *Panel2;
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
virtual void __fastcall ReadState(TReader *Reader)
{
Reader->OnFindComponentClass = FindComponentClass;
inherited::ReadState(Reader);
}
void __fastcall FindComponentClass(TReader* Reader, const AnsiString ClassName, TMetaClass* &ComponentClass)
{
if (ClassName == "TPanel")
{
ComponentClass = __classid(TMyPanel);
}
}
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
실행하면 역시 화면에 2개의 붉은색 패널이 나타납니다.
그럼..
|