基于Delphi的组件设计之概念

2016-01-29 14:26 16 1 收藏

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

【 tulaoshi.com - 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或者他之下的类,才能在对象察看器中可以展开它,并设置它里面的属性。

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

来源:https://www.tulaoshi.com/n/20160129/1493285.html

延伸阅读
  如果你想脱离asp爱好者的水平,那么你就应该学会为asp编写组件。我在google上搜索了一下,Delphi编写asp组件的文章一共就几篇,所以今天写了这篇Delphi编写asp组件的基础文章,希望对新手有点帮助。如果你要学习VB编写asp组件的话,建议看看龙卷风大哥的文章(http://blog.csdn.net/online/category/9939.aspx),不是我可以比的。呵呵:)...
标签: Delphi
分布式COM(以下简称DCOM)的出现给我们轻松的创建分布式应用提供了机会;我们可以完全不去理会低级别的Windows Sockets(DCOM通过MS-RPC让客户与对象进行通信,幸运的是要开发COM应用,开发者几乎可以不去理会MS-RPC)而开发出功能强大、偶合性低(功能模块相对独立,很好的发挥了OO的思想)、易于部署的分布式计算系统。 本文我们...
标签: Delphi
  组件技术是新一代软件技术发展的标志,作为著名的RAD开发工具,Delphi可以轻松地实现组件的开发。本文将详细介绍Delphi中DCOM/CORBA的实现步骤。 ■创建应用服务器 要创建一个多层Client/Server应用程序,首先要创建应用服务器,然后注册或安装应用服务器,只有应用服务器已注册并且正在运行的情况下,才能创建...
Delphi是美国Borland公司推出的一个十分优秀的软件开发平台。它以其强大的开发功能在众多的开发环境中独占鳌头,尤其是它在多媒体软件的开发上更是技高一筹。在Delphi的组件板system页上有一个称为MediaPlayer的组件,它是多媒体软件制作的核心,以下将就MediaPlayer 组件的使用作以详解。 MediaPlayer组件主要是用于控制MCI(Med...
Struts 和 Tiles 辅助基于组件的开发(5) Struts 和 Tiles 更复杂的使用 篇幅所限,不答应我再深入讨论 Struts 和 Tiles 包其它一些实用的方面,但我真的想简要地谈一下,这样您可以对 Struts 和 Tiles 可以做些什么有所了解。假如有足够的需求,可能这些内容会是将来文章的主题。 您会在本文的两个示例中注重到,我编码了名...

经验教程

183

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部