在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
写给觉得自己编写Delphi很复杂的人,包括自己。 Delphi自己写控件其实并不难,难的在于开发复杂的控件。(其实,编程,很多东西都是会了就不难,因此,我怕自己日后觉得自己写控件很难,特意在这记录自己写控件的过程,顺便也写下接口的使用) 第一步:控件代码: 下面是控件的一个Unit内容:
代码
unit pgdbedit;
interface uses SysUtils, Classes, Controls, StdCtrls, CnEdit; const IID_pgDBConInterface='{88CEA70D-0506-4CC0-ABB0-4BDBFA0DDBCE}'; type TdbType = (dbText, dbInteger, dbFloat, dbBit, dbTime, dbBlob); //文本类型 IpgDBConInterface = interface(IInterface) //定义数据库操作控件的接口 [IID_pgDBConInterface] //Stdcall是指示函数的参数入栈方式是从右到左 function GetCanUpdate: Boolean; procedure SetCanUpdate(value: Boolean); property DB_canUpdate: Boolean read GetCanUpdate write SetCanUpdate; //是否更新数据。 end; TpgDbEdit = class(TEdit, IpgDBConInterface) private { Private declarations } FCanUpdate: Boolean; function GetCanUpdate: Boolean; procedure SetCanUpdate(value: Boolean); protected { Protected declarations } public { Public declarations } published { Published declarations } property DB_canUpdate: Boolean read GetCanUpdate write SetCanUpdate; //是否更新数据。 implementation function tpgdbedit.GetCanUpdate: Boolean; begin Result:=FCanUpdate; end; procedure tpgdbedit.SetCanUpdate(value: Boolean); begin FCanUpdate:=value; end; end.
说明:这里没有RegisterComponents是因为打算创建2个包,一个是运行时的包以及设计时的包。
第二步:创建注册单元: 下面是这个单元的源码:
代码
unit pgControlsRegister;
interface uses Classes; procedure Register; {* 控件、组件编辑器、属性编辑器注册过程} implementation uses pgdbedit; procedure Register; begin RegisterComponents('pgControls', [TpgDbEdit]); end; end.
第三步:创建运行时的包: (文件->新建->其它->Package) 在创建出来的Package中点上面的Add按钮,把第一步中的单元添加进去,然后点上面的Options按钮,在Usage Options中选择Runtime only。点击OK关闭掉Options,然后点Compile进行编译,系统会提示需要加入其它包的,点确认就行了,系统会自动添加必要的包。这样,运行时的包就创建完了。
第四步:创建设计时的包: (文件->新建->其它->Package) 在创建出来的Package中点上面的Add按钮,把第二步中的单元添加进去,然后点上面的Options按钮,在Usage Options中选择Designtime only。点击OK关闭掉Options,然后点Compile进行编译,系统会提示需要加入其它包的,点确认就行了,系统会自动添加必要的包。这样,设计时的包就创建完了。
有关这两个包的概念,大家可以去: http://www.cnpack.org/showdetail.php?id=510&lang=zh-cn 看下介绍,我都是看了介绍才知道,才会去这样弄。这里,我们也是安装设计时的包就行了。运行时的包不用管。 原创作品出自努力偷懒,转载请说明文章出处:http://www.cnblogs.com/kfarvid/ |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论