基于Delphi的组件设计之概念

nbyyzcy

nbyyzcy

2016-01-29 14:26

基于Delphi的组件设计之概念,基于Delphi的组件设计之概念
  一、组件的简要层次结构

  一般情况下,VCL的组件可以从Tcomponent为开始。其最明显的特征就是它的属性可以在设计时通过对象察看器来操纵,另外,他还能拥有其他组件。

  从Tcomponent下,分出非可视组件和可视组件。

  非可视组件如TOPenDialog,TTimer,TTable等,这些组件因为继承自Tomponent,所以也就继承了在设计时可以被操纵的特性。

  可视化组件始自TControl,是它引入了可视化属性和方法,使继承自它的类都有了这些可视化特性。

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

  二、属性

  先看一个简单的属性定义:

TsomeObj=class

Private

FCount:integer;

Protected

Procedure SetCount(value:Integer);

published

Property count:integer read FCount write SetCount default 0;//属性定义

End;
  该属性从私有成员FCount读出值,而靠SetCount方法设置值到私有成员FCount。

  属性的优势在于可以很直观进行读写,而又不同于私有成员。因为属性可以通过写访问方法来保护私有成员:

Procedure TsomeBoj.SetCount(value:Integer);

Begin

If FCount<>value then

FCount:=value;

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

  NoDefault,设置了这个关键字,比如

Property count:integer read FCount write SetCount NoDefault;  
  则无论它的值是什么,都会被写到DFM文件中。

  属性可以有如下几种类型,下面只给出简单介绍,而这些类型的属性,会在组件制作时详细的运用:

  简单类型属性:如上面定义的,加一个例子

Property text:string read Ftext write SetText;
  枚举类型属性:

TEnumtype=(Enum1,Enum2,Enum3);

FEnumtype:TEnumtype;

Property Enumtype:TEnumtype read FEnumtype write FEnumtype;
  在对象察看器中看来就是下拉列框选择值。

  集合类型属性:

Tset=(set1,set2,set3);

Tsets=set of Tset;

Fsets:Tsets;

Property sets:Tsets read Fsets write Fsets;
  在对象察看器中看来,就是列出几个选项分别设置真假。比如TForm的BorderIcons属性即是。

  对象类型属性:一个属性是一个对象,而这个对象必须派生自Tpersistent或者他之下的类,才能在对象察看器中可以展开它,并设置它里面的属性。

  数组类型属性:数组属性如果要在对象察看器中看见,需要有自己的属性编辑器(如果不想在对象察看器看当然就不用啦),是比较高级的组件,在后来的组件制作再来介绍,会更直观一些。这里只给出它的定义形式:

展开更多 50%)
分享

猜你喜欢

基于Delphi的组件设计之概念

Delphi
基于Delphi的组件设计之概念

基于Delphi的组件设计之简单实例

Delphi
基于Delphi的组件设计之简单实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi的组件读写机制

编程语言 网络编程
Delphi的组件读写机制

基于Delphi的图像漫游

编程语言 网络编程
基于Delphi的图像漫游

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

自动化基础概念之“COM组件与接口”

编程语言 网络编程
自动化基础概念之“COM组件与接口”

组件制作之一(概念)

编程语言 网络编程
组件制作之一(概念)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《全民打怪兽》五星伙伴哪个好?最强五星伙伴排

《全民打怪兽》五星伙伴哪个好?最强五星伙伴排

Delphi编写后台监控软件

Delphi编写后台监控软件
下拉加载更多内容 ↓