当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 接下来要动手来做一个组件了,我想了一个计数器组件,功能方面是比较简单的,但这不是本章的重点,这一章的重点是说明一个组件的制作全过程。
 

 

 ·delphi 接口笔记    »显示摘要«
    摘要: // a:=stringtoguid({000208fb-0000-0000-c000-000000000046});// ichart 和 chart接口各自具有不同的guid根本不相容// a:=stringtoguid({000208fb-0001-0000-c000-000000000046});}// stringtoguid 用于将 字符串guid转换为 tguid// guidto......
    摘要: str:=table1.tablename;query1.close;query1.sql.clear;query1.sql.add(format(select * from %s,[str]));query1.open; ......


组件制作之二(一个简单组件的制作过程)
接下来要动手来做一个组件了,我想了一个计数器组件,功能方面是比较简单的,但这不是本章的重点,这一章的重点是说明一个组件的制作全过程.在其中可以学到很多组件制作的技巧,当然这些也是我从书上学得的.好了,开始制作吧:

【程序编程相关:建立、读取、存贮INI文件的方法《一》

【推荐阅读:插件管理框架 for Delphi(二)

  【扩展信息:在TDBGrid控件中为作修改过的记录进

这是一个可以计数的组件,为了简单,我以秒为单位,当开始时,他就从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);


...   下一页
 ·pascal精要笔记    »显示摘要«
    摘要: pascal精要笔记 pascal语言的大小写不敏感特性有一个例外:控件包中的register 过程必须以大写字母r开始,因为需要与c++builder 兼容。 ,编译器不编译代码中的空格、空行和tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。(也就是说: = 这样的写法没有问题,我原来还以为由问题那!) 记住要用代码模板(方便开发)快捷键:ctrl+j a......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE