Delphi编写自定义控件以及接口的使用

写给觉得自己编写Delphi很复杂的人,包括自己。

Delphi自己写控件其实并不难,难的在于开发复杂的控件。(其实,编程,很多东西都是会了就不难,因此,我怕自己日后觉得自己写控件很难,特意在这记录自己写控件的过程,顺便也写下接口的使用)

第一步:控件代码:

下面是控件的一个Unit内容:

 

ExpandedBlockStart.gif 代码
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个包,一个是运行时的包以及设计时的包。

 

第二步:创建注册单元:

下面是这个单元的源码:

 

ExpandedBlockStart.gif 代码
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/

转载于:https://www.cnblogs.com/kfarvid/archive/2010/08/05/1793219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值