RegisterComponents (C++)
Contents
Description
This is the defs file for the RegisterComponents project.
class PACKAGE TDemoLabel : public TGraphicControl { private: TWinControl* FFocusControl;
Code
void __fastcall SetFocusControl(TWinControl* Value);
void __fastcall CMDialogChar(TWMKey& Message);
void __fastcall CMTextChanged(TMessage& Message);
protected:
virtual void __fastcall Notification(TComponent* AComponent, TOperation Operation);
virtual void __fastcall Paint(void);
public:
__fastcall virtual TDemoLabel(TComponent* AOwner);
__published:
__property Caption ;
__property Color ;
__property TWinControl* FocusControl = {read=FFocusControl, write=SetFocusControl, nodefault};
__property Font ;
__property ParentColor ;
__property ParentFont ;
public:
__fastcall virtual ~TDemoLabel(void) { }
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGCHAR, TWMKey, CMDialogChar);
MESSAGE_HANDLER(CM_TEXTCHANGED, TMessage, CMTextChanged);
END_MESSAGE_MAP(TGraphicControl);
};
Uses
- System.Classes.RegisterComponents ( fr | de | ja )
- System.Classes.TComponent.FreeNotification ( fr | de | ja )=Description=
The following code registers several components, some on the MySystem palette page that already exist, and some on a new palette page that is created when the components are installed.
Code
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TDemoLabel)};
RegisterComponents("Samples", classes, 0);
RegisterComponents("MySystem", classes, 0);
}
__fastcall TDemoLabel::TDemoLabel(TComponent *AOwner):
TGraphicControl(AOwner)
{
FComponentStyle >> csInheritable;
Width=64;
Height=13;
}
void __fastcall TDemoLabel::Notification(TComponent *AComponent, TOperation Operation)
{
TGraphicControl::Notification(AComponent, Operation);
if ((Operation == opRemove) && (AComponent == FFocusControl))
FFocusControl = 0;
}
void __fastcall TDemoLabel::SetFocusControl(TWinControl *Value)
{
FFocusControl = Value;
// Calling FreeNotification ensures that this component
// will receive an opRemove when Value is either removed
// from its owner or destroyed.
Value->FreeNotification(Value);
}
void __fastcall TDemoLabel::Paint()
{
TRect Rect = ClientRect;
Canvas->Font = Font;
Canvas->Brush->Color = Color;
Canvas->FillRect(Rect);
DrawText(
Canvas->Handle,
Caption.t_str(),
Caption.Length(),
&Rect,
DT_EXPANDTABS | DT_WORDBREAK | DT_LEFT);
}
void __fastcall TDemoLabel::CMDialogChar(TCMDialogKey &Message)
{
if (FFocusControl != NULL &&
Enabled == true &&
IsAccel(Message.CharCode, Caption))
if (FFocusControl->CanFocus()){
FFocusControl->SetFocus();
Message.Result = 1;
}
}
void __fastcall TDemoLabel::CMTextChanged(TMessage &Message)
{
Invalidate();
}
Uses
- System.Classes.RegisterComponents ( fr | de | ja )
- System.Classes.TComponent.FreeNotification ( fr | de | ja )