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

zl_106906

zl_106906

2016-01-29 14:26

基于Delphi的组件设计之简单实例,基于Delphi的组件设计之简单实例
  这是一个可以计数的组件,为了简单,我以秒为单位,当开始时,他就从0开始增加,并显示出来,到3600时,它又回到0,如此循环。当然它也可以停止,暂停,继续。另外,他还有一个时间事件,即可以设定每隔多少时间来触发这个事件,这倒是一个好的功能,我们可以设半个小时触发事件,在事件处理函数中来一个声音,然后睡个觉,半个小时后,就由这个声音来提醒你起床了。

  我们一开始不要新建组件单元,而是把它当成一个工程中的一个类来应用,这样更易于调试,于是我们新建一个工程,又新建一个空白单元用于放置这个类

  一、确定父类

  接下来给这个类起名叫TTimeCount,那么它的父类应该是什么呢,它要能显示出来,得有一个容量来让他显示,TPanel是个不错的选择,我看了一下源码,发觉TPanel什么也没有做,只是把它的父类TCustomPanel的属性显化出来(这个等一下讲),TCustomPanel把好多的属性声明为Protected,为他的子类提供了选择,他的子类如果要使这些属性能在对象察看器中看到,可以在Published重新声明一下,如果不想,则不用去理会他。而我们的计数器组件正好不用那么多属性,正好合适。于是我决定用TCusomPanel为父类

  类建立如下:

TTimeCount=class(TCustomPanel)
private
protected
public
published
end;
  二、确定成员,方法和属性和事件

  FCount; 只读私有成员,保存计数值

  FActive:Boolean; /确定是否发生类的时间间隔事件

  FInterval:TInterval; 这个可以设置时间事件触发间隔,本来用整型值会好一些,但会了学习起见,这里用了一个枚举形的,在Type中声明如下:

TInterval=(TenM,TwentyM,ThirtyM,FortyM,FiftyM,SixtyM);
  分别表示十分钟到六十分钟。

  TimeLen,TimeNum:integer;这两个用在类的时间事件发生的确定上,与外界隔绝。

  FTimeOut:TNotifyEvent;时间间隔事件的方法指针,通过调度方法实现他与外部的处理函数关联。

  我们要它能以秒为单位来计数,则要涉及到时间的应用,所以就有了这个最重要的成员:

  FTimer:TTimer;

  这个成员对象要在类构造函数中实例化它,并赋与他的属性值,还要在析构函数在释放它。

  如下:

//构造函数,继承父类的构造函数,并初始化类中的成员。

constructor TTimeCount.Create(AOwner:TComponent);

//创建时间控件并设置相关的参数

procedure CreateTimer;
begin
FTimer:=TTimer.Create(self);
FTimer.Enabled:=False;
FTimer.Interval:=1000;
FTimer.OnTimer:=FTimerTimer;
end;
begin
inherited Create(AOwner);
CreateTimer;
end;

//析构函数,先释放时间控件,再继承父类的析构函数

destructor TTimeCount.Destroy;
begin
FTimer.Free;
inherited Destroy;
end;
  构造函数中还要设置该组件的外观和默认值,这里把它删去,到源代码再贴出来。

  其中

  FTimerTimer;是很重要的函数,在该类中有声明:

procedure FTimerTimer(Sender:Tobject);//时间控件的事件处理函数
  在这个处理函数中,实现了计数值的递增并显示到容器中,此外,还在判断类的时间事件是否有足够条件触发了,如果有则调用DoTimeOut;过程,这个就是事件的调度函数啦:

//事件调度函数,将外部的事件处理函数和该类的事件方法指针联系起来

procedure TTimeCount.DoTimeOut;
begin
if Assigned(FTimeOut) then
FTimeOut(Self);
end;
  而属性则是根据私有成员来设定了:

展开更多 50%)
分享

猜你喜欢

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

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

基于Delphi的组件设计之概念

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

s8lol主宰符文怎么配

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

WEB中基于XMLHTTP的简单实例分析

Web开发
WEB中基于XMLHTTP的简单实例分析

Delphi的组件读写机制

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

lol偷钱流符文搭配推荐

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

基于Delphi的图像漫游

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

用Delphi语言来学设计模式之简单工厂篇

Delphi
用Delphi语言来学设计模式之简单工厂篇

lolAD刺客新符文搭配推荐

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

Flash 3d效果精彩实例(9)

Flash 3d效果精彩实例(9)

《马上有英雄》攻略之升级盟友心得分享

《马上有英雄》攻略之升级盟友心得分享
下拉加载更多内容 ↓