基于delphi的组件设计之概念

基于delphi的组件设计之概念

ID:15960720

大小:29.50 KB

页数:7页

时间:2018-08-06

基于delphi的组件设计之概念_第1页
基于delphi的组件设计之概念_第2页
基于delphi的组件设计之概念_第3页
基于delphi的组件设计之概念_第4页
基于delphi的组件设计之概念_第5页
资源描述:

《基于delphi的组件设计之概念》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Delphi的组件设计之概念基于Delphi的组件设计之概念作为组件制作的开始,应该了解一些概念,我以为这些概念是非常重要的,将可以作为以后实践的理论基础。  一、组件的简要层次结构  一般情况下,VCL的组件可以从Tcomponent为开始。其最明显的特征就是它的属性可以在设计时通过对象察看器来操纵,另外,他还能拥有其他组件。  从Tcomponent下,分出非可视组件和可视组件。  非可视组件如TOPenDialog,TTimer,TTable等,这些组件因为继承自Tomponent,所以也就继承了在设计时可以被操纵的特性。  可视化组件始自TContro

2、l,是它引入了可视化属性和方法,使继承自它的类都有了这些可视化特性。  TControl又分出两类组件类型:从TWinControl(窗口控件)自下的控件,和从TGraphicControl(图形控件)自下的控件。继承自TWinControl的控件将Windows控件进行封装,所以拥有Windows控件的很多特性,比如可以得到焦点,有唯一的句柄,用户可以通过发送消息与这些控件进行交互等。而继承自TGraphicControl的控件,也是可见的,但没有句柄,可以称之为图形控件,比如TLabel,TBevel,都是Delphi画出来的,并不占用系统资源。  二、属性 

3、 先看一个简单的属性定义:TsomeObj=classPrivateFCount:integer;ProtectedProcedureSetCount(value:Integer);publishedPropertycount:integerreadFCountwriteSetCountdefault0;//属性定义End;  该属性从私有成员FCount读出值,而靠SetCount方法设置值到私有成员FCount。  属性的优势在于可以很直观进行读写,而又不同于私有成员。因为属性可以通过写访问方法来保护私有成员:ProcedureTsomeBoj.SetCoun

4、t(value:Integer);BeginIfFCount<>valuethenFCount:=value;End;  其中属性定义中的Default 0并不是默认值(即对象察看器显示的值),默认值要在组件类的构造函数中设定。而Default有这样的作用,决定DFM文件中是否要保存该属性的值,比如上面为Default0,即当该属性值为0时,则该属性不会被保存到DFM中,如果该属性值不为0,则该属性会被保存到DFM中。另外属性定义还有一个关键字为  NoDefault,设置了这个关键字,比如Propertycount:integerreadFCountwriteS

5、etCountNoDefault;  则无论它的值是什么,都会被写到DFM文件中。属性可以有如下几种类型,下面只给出简单介绍,而这些类型的属性,会在组件制作时详细的运用:  简单类型属性:如上面定义的,加一个例子Propertytext:stringreadFtextwriteSetText;  枚举类型属性:TEnumtype=(Enum1,Enum2,Enum3);FEnumtype:TEnumtype;PropertyEnumtype:TEnumtypereadFEnumtypewriteFEnumtype;  在对象察看器中看来就是下拉列框选择值。  集合

6、类型属性:Tset=(set1,set2,set3);Tsets=setofTset;Fsets:Tsets;Propertysets:TsetsreadFsetswriteFsets;  在对象察看器中看来,就是列出几个选项分别设置真假。比如TForm的BorderIcons属性即是。  对象类型属性:一个属性是一个对象,而这个对象必须派生自Tpersistent或者他之下的类,才能在对象察看器中可以展开它,并设置它里面的属性。  数组类型属性:数组属性如果要在对象察看器中看见,需要有自己的属性编辑器(如果不想在对象察看器看当然就不用啦),是比较高级的组件,在后

7、来的组件制作再来介绍,会更直观一些。这里只给出它的定义形式:propertySelected[Index:Integer]:BooleanreadGetSelectedwriteSetSelected;  三、事件  事件其实是一种特殊的属性,他是指针类型,指向一个事件方法类型。当有特定的事件发生时,它就会关联到一段执行代码。  下面以一个例子来讲解事件是怎么发生的。  我们先定义一个鼠标点下事件的鼠标事件类型,它其实就是方法指针:typeTMouseEvent=procedure(Sender:TObject;Button:TMouseButton;Shift:

8、TShif

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。