TControl的主要功能研究(属性,函数,事件)
-------------------------- TControl主要用来管理以下消息 --------------------------
鼠标消息
显示隐藏刷新
控件状态 ControlState/ControlStyle (待续,需要详细分析)
位置标题移动 Touch/Hint/Help/Drag/Action/WindowText/AutoSize/Dock,
颜色字体可见对齐 Color/Font/Visible/ScreenToClient/BringToFront/Bounds/Alignment/Anchors/BiDiMode/ClientRect
事件 OnClick/OnMouseDown/OnResize
procedure WndProc(var Message: TMessage); virtual; 处理鼠标消息
function DesignWndProc(var Message: TMessage): Boolean; dynamic;
procedure DefaultHandler(var Message); override; 只处理WM_GETTEXT消息
function Perform(Msg: Cardinal; WParam: WPARAM; LParam: PChar): LRESULT; overload;
最重要属性(内部):待续
最重要属性(外部):待续
原因是以上属性/事件/方法,都是可以被所有可视控件所通用,不管有没有句柄。
而不可视控件完全不需要这些消息,也就是TComponent不需要载入这些消息,所以TControl提出来单独作为VCL的一层,而且是重要的一层。Delphi的Windows编程从这里开始!所以WndProc也在这里才首次出现。尽管TObject有Dispatch和DefaultHandler可以给所有的子类发消息,但其实用处不大,也许只是为了扩展性强,到底哪里真的需要这两个函数有待考察。另外,TControl之所以成为单独一层,除了从这层开始处理消息(对上负责,上级不需要处理消息),同时也把TWinControl和TGraphicControl的公共属性都提取出来了(对下负责,否则这么多事件和属性难道写两遍),而且可能有那么点跨平台的意思,毕竟到这层位置,没有有平台深刻相关(没有出现句柄,没有强烈依赖的WinAPI,只有鼠标颜色对齐拖动什么的,即使用到了API也容易轻易改写,因为各个平台都有这些东西)。有空考察一下Kylix的TControl做什么就都知道了。可惜FireMonkey没有用到TControl,处理消息完全是通过模拟。
TControl的主要功能研究(属性,函数,事件)的更多相关文章
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
- React Native移动框架功能研究
React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...
- 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作
上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...
- 深入研究JavaScript的事件机制
本篇开始将回顾下Javascript的事件机制.同时会从一个最小的函数开始写到最后一个具有完整功能的,强大的事件模块.为叙述方便将响应函数/回调函数/事件Listener/事件handler都称为事件 ...
- C#中的自定义控件中的属性、事件及一些相关特性的总结(转)
摘要: C#中的自定义控件中的属性(Property).事件(Event)及一些相关特性(Attribute)的总结 今天学习了下C#用户控件开发添加自定义属性的事件,主要参考了MSDN,总结并实 ...
- QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化
元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数, ...
- Excel催化剂开源第9波-VSTO开发图片插入功能,图片带事件
图片插入功能,这个是Excel插件的一大刚需,但目前在VBA接口里开发,如果用Shapes.AddPicture方法插入的图片,没法对其添加事件,且图片插入后需等比例调整纵横比例特别麻烦,特别是对于插 ...
- [转]jqGrid 属性、事件全集
本文转自:http://blog.csdn.net/rosanu_blog/article/details/8334070 以下是jqGrid 最常用的属性和事件,经过一段时间的整理,终于弄的差不多了 ...
- combobox 属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
随机推荐
- [ Nowcoder Contest 165 #D ] 合法括号序列
\(\\\) \(Description\) 键盘上有三个键,敲击效果分别是: 在输出序列尾部添加一个左括号 在输出序列尾部添加一个右括号 删除输出序列尾部的第一个元素,若输出序列为空,则什么都不发生 ...
- 一个.py引用另一个.py中的方法
处理函数 X_Add_Y_Func.py #__author__ = 'Administrator' def add_func(x, y): return x+y 调用函数 X_Add_Y_Func_ ...
- 第一次android混淆实战
第一次混淆,主要是因为引用本地第三方jar包的问题.虽然说本地第三方jar包自动避免混淆,但一些本地第三方jar包下的一些包要避免混淆.比如: 文中的com.org 这些包名都要避免混淆. 下面是我用 ...
- Android 使用MySQL直接访问数据库
在实际项目中,一般很少直接访问MySQL数据库,一般情况下会通过http请求将数据传送到服务端,然后在服务端连接mysql数据库. 在android 中,会通过使用Jdbc 连接MySQL 服务器 p ...
- 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具
https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...
- JS——隐式全局变量
在函数中,var声明的是局部变量,不带var的是隐式全局变量 <script> function fn() { var a = b = c = 0;//a是局部变量,b.c是全局变量 va ...
- 从ABC到流利口语-unit01
Unit 1 Introduction1 Good evening,everyone.It's a pleasure to you all. My name is Wang Dong.I'M from ...
- java_randomAccessFile类的使用
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件.RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上 ...
- 扩增子图表解读5火山图:差异OTU的数量及变化规律
火山图 Volcano plot 在统计学上,火山图是一种类型的散点图,被用于在大数据中快速鉴定变化.由于它的形成像火山喷发的样子,所以被称为火山图.和上文讲的曼哈顿图类似. 火山图基本元素 火山 ...
- strcmp 与 _tcscmp
strcmp 用来比较ANSI字符串,而_tcscmp用来比较UNICODE(宽字符)的字符串.ANSI字符串中,1个英文字母为1个字节,1个中文字符为2个字节,遇到0字符表示字符串结束.而在UNIC ...