c++builder自定义控件

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[] = {__classid(TDemoLabel)};
RegisterComponents("Samples", classes, );
RegisterComponents("MySystem", classes, );
} __fastcall TDemoLabel::TDemoLabel(TComponent *AOwner):
TGraphicControl(AOwner)
{
FComponentStyle >> csInheritable;
Width=;
Height=;
} void __fastcall TDemoLabel::Notification(TComponent *AComponent, TOperation Operation)
{
TGraphicControl::Notification(AComponent, Operation);
if ((Operation == opRemove) && (AComponent == FFocusControl))
FFocusControl = ;
} 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 = ;
}
} void __fastcall TDemoLabel::CMTextChanged(TMessage &Message)
{
Invalidate();
}

c++builder自定义控件的更多相关文章

  1. [翻译]使用Swift在Xcode中创建自定义控件

    使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...

  2. android拍照选择图片上传服务器自定义控件

    做android项目的时候总免不了遇到图片上传功能,虽然就是调用android系统的拍照和相册选择功能,但是总面部了把一大推代码写在activity里,看上去一大推代码头都昏了.不如把这些功能都集成一 ...

  3. PropertyGrid自定义控件

    PropertyGrid是一个很强大的控件,使用该控件做属性设置面板的一个好处就是你只需要专注于代码而无需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显示.但是这也带来了一 ...

  4. duilib进阶教程 -- XML嵌套及自定义控件 (4)

    代码下载:http://download.csdn.net/detail/qq316293804/6433937 之前入门教程里已经讲过了自定义控件,这里借着迅雷播放器再次举个例子. 1.我们先给迅雷 ...

  5. 【转】iOS笔记-自定义控件(OC)

    原文网址:http://www.jianshu.com/p/f23862eb7b8a 导读: iOS开发中,很多时候系统提供的控件并不能很好的满足我们的需求,因此,自定义控件便成为搭建UI界面中必不可 ...

  6. Android 自定义控件之 日期选择控件

    效果如下: 调用的代码: @OnClick(R.id.btn0) public void btn0() { final AlertDialog dialog = new AlertDialog.Bui ...

  7. android自定义控件一站式入门

    自定义控件 Android系统提供了一系列UI相关的类来帮助我们构造app的界面,以及完成交互的处理. 一般的,所有可以在窗口中被展示的UI对象类型,最终都是继承自View的类,这包括展示最终内容的非 ...

  8. 23种设计模式--建造者模式-Builder Pattern

    一.建造模式的介绍       建造者模式就是将零件组装成一个整体,用官方一点的话来讲就是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.生活中比如说组装电脑,汽车等等这些都是建 ...

  9. ASP.NET MVC学习之母版页和自定义控件的使用

    一.母板页_Layout.cshtml类似于传统WebForm中的.master文件,起到页面整体框架重用的目地1.母板页代码预览 <!DOCTYPE html> <html> ...

随机推荐

  1. cocos2d-x 3.17 jsb android运行报错

    编译成功,运行失败,提示如下: 2018-11-15 19:09:56.343 2820-2852/net.jd85.test D/cocos2d-x debug info: cocos2d: ful ...

  2. mysql安装优化

    安装centos7 安装mysql解决方案1 安装mariadb解决方案2 官网下载安装mysql-server时区批量配置编码远程连接my.cnf简版的参数说明核心配置参数升级版mysql存储引擎M ...

  3. 逻辑回归 logistic regression(1)逻辑回归的求解和概率解释

    本系列内容大部分来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些理解,编程实现和学习笔记. 第一章 Logistic regression 1.逻辑 ...

  4. Bezier曲线原理—动态解释

    公式线性公式给定点P0.P1,线性贝兹曲线只是一条两点之间的直线.且其等同于线性插值.这条线由下式给出: 一阶贝赛尔曲线上的由两个点确定 P0 和P1,当t在0--->1区间上递增时,根据此会得 ...

  5. Postman 上传文件

    一.选择post请求方式,输入请求地址 二.填写Headers Key:Content-Type Value:multipart/form-data 三.填写body 选择form-data 然后选择 ...

  6. Cookie用法

    //写入 protected void Button1_Click(object sender, EventArgs e) { HttpCookie cookie=new HttpCookie(&qu ...

  7. 通过Java Api与HBase交互

    HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...

  8. BZOJ4057 [Cerc2012]Kingdoms

    题意 有一些王国陷入了一系列的经济危机.在很多年以前,他们私底下互相借了许多钱.现在,随着他们的负债被揭发,王国的崩溃不可避免地发生了--现在有n个王国,对于每对王国A和B,A欠B的钱被记为d_AB( ...

  9. VirtulBox安装虚拟机(鼠标点击时)0x00000000指令引用的0x00000000内存该内存不能为written错误解决方案

    这个错误并不是所有人都会用到,我用的是WIN7系统,公司的电脑.查找了很多原因后,发现的确是由于系统主题被破解过的原因. 手工恢复风险太高.通过下面的工具就可以直接恢复.UniversalThemeP ...

  10. Kafka之sync、async以及oneway

    kafka有同步(sync).异步(async)以及oneway这三种发送方式,某些概念上区分也可以分为同步和异步两种,同步和异步的发送方式通过“producer.type”参数指定,而oneway由 ...