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