여기서는 그냥 TCustomControl 로 만들었는데 뭐 Panel이라면 Panel위에 Label이 하나 올라가 있는
그런 콤포넌트가 되겠네요
기본적으로 Label의 Caption을 바꾸는것과. 이 Label을 클릭했을때 일어날 이벤트를 주는것
이 두가지를 예를 들어 보겠습니다. 별내용없습니다 간단합니다 ^ㅡ^;;
<!--CodeS-->
uses <사용하고자하는 넘의 본 클래스가 요기서 선언이 되야겠지요>;
~~
type
~~<Event>~~
// 이 부분이 Label을 클릭했을때의 이벤트선언 부분입니다.
TTitleClickEvent = procedure(Sender:TObject) of object;
// TCustomControl 을 상속하는 새로운 클래스를 하나 만들굽쇼
TMyComponent = class(TCustomControl)
private
FLblTitle: TLabel; //<-- 여기 TLabel 을 선언합니다. 이넘을 사용하겠다 이거죠
FLblCaption : String; //<-- 이넘이 TLabel.Caption 의 값을 저장하는 변수로 쓰죵
// 사실 다른데서 FLblTitle 이넘을 이용하지 않겠다 라고 한다면
// 이 변수는 필요없는 변수입니다.
FOnLblTitleClick : TTitleClickEvent; //<-- 이넘을 클릭할때 처리할 이벤트변수(?)
~~<Private Vars>~~
// 이넘을 이용해서 FLblTitle 라는 TLabel의 Caption 값을 바꿉니다.
procedure SetLblTitleCaption(Value:String);
// 이넘을 이용해서 FLblTitle 라는 TLabel이 클릭될때 할일을 처리해 줍니다.
procedure lblTItleClick(Sender:TObject);
~~
protected
~~
public
constructor Create(AOwner: TComponent); override;
destructor Destroy;override;
~~
published
// TMyComponent.LblCaption 의 값이 변경되면 SetLblTitleCaption 프로시져를
// 호출한다고 합니다. (당연히 요놈은 프로퍼티가 되겠죵?)
property LblCaption : String read FLblCaption Write SetLblTitleCaption;
// 이넘을 통해서 Label을 클릭했을때 발생할 이벤트를 정의해 줄수있지요
property OnLblitleClick : TTitleClickEvent read FOnLblTitleClick write FOnLblTitleClick;
~~
end;
// 요기서부터 시작합시다
procedure Register;
implementation
// 이넘은 콤포넌트 팔래트 등록부분
procedure Register;
begin
RegisterComponents('TestComponent', [TMyComponent ]);
end;
// ===================================================
// CONSTRUCTOR 에서 FlblTitle 라는 TLabel를 생성해줘야겠지요?
// ===================================================
constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FlblTitle := TLabel.Create(Self);
FlblTitle.Parent := Self;
FlblTitle.Caption := 'TEST';
FlblTitle.Top := 4;
FlblTItle.Left := 45;
FlblTItle.AutoSize := True;
FlblTitle.Cursor := crHandPoint;
// 이부분은 위에서 procedure lblTItleClick(Sender:TObject); 으로 선언한 부분입니당.
// 이넘을 클릭했을때 어떤 이벤트를 발생시킬거냐 이거입죵
FlblTItle.OnClick := lblTItleClick;
end;
// ===================================================
// 생성자가 있으면 소멸자도 있어야지요
// CONSTRUCTOR에서 생성한 FLblTitle 라는넘을 없애줍니다.
// ===================================================
destructor TMyComponent.Destroy;
begin
FLblTitle.Free;
inherited;
end;
// ===================================================
// LblTitie.Caption을 변경해주는 부분
// ===================================================
procedure TMyComponent.SetLblTitleCaption(Value:String);
begin
FLblCaption := Valuel
if assigned(FLblTitle) then begin
FLblTitle.Caption := FLblCaption;
end;
end;
// ===================================================
// Label이 클릭
친절하게 코드까지 올려주시니 몸둘바를 모르겠네요.^^;;;