c++builder自定义控件
2015-07-13 20:55
447 查看
c++builder自定义控件
http://docwiki.embarcadero.com/CodeExamples/XE8/en/RegisterComponents_%28C%2B%2B%29
http://docwiki.embarcadero.com/CodeExamples/XE8/en/RegisterComponents_%28C%2B%2B%29
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); }; 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(); }
相关文章推荐
- C++常用术语及其英文翻译的含义和简单用途总结(一)
- C++ 学习之函数重载、基于const的重载
- [C++] const与重载
- C++中const重载
- vs2010下C++调用lib或dll文件
- C语言基础之--------内存地址分配
- C语言基础———指针,结构体指针,函数指针
- ZOJ2714迭代更新
- C语言基础---------函数,结构体
- C语言基础-----二维数组,三维数组
- 【C++/STL】list的实现(采用空间配置器和迭代器)
- C语言基础之数组
- C语言基础---BOOL 类型,运算符,if 语句,switch语句
- C++中将构造函数或析构函数定义为private
- [Section 1.1] Greedy Gift Givers
- C++中浅拷贝和深拷贝问题
- [leetcode-27]Remove Element(C语言)
- C语言中关键字auto、static、register、const、volatile、extern的作用
- c++ primer读书笔记-第十四章 重载操作符与转换
- C与C++中定义结构体的不同方式