ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:298.90KB ,
资源ID:3159763      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3159763.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(delphi自定义控件设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

delphi自定义控件设计.docx

1、delphi自定义控件设计Delphi自定义控件设计邓清闯 张丹 姬希娜 李国杰 (许继电气中试部 河南许昌461000 )摘 要:本文通过一个例子程序,系统、详细地介绍了如何设计Delphi的自定义控件,该控件代码技术难度不高,旨在说明Delphi控件的设计方法,包括自定义控件创建向导、代码设计、图标设计及控件发布。关键词:控件、自定义控件、Delphi控件Design custom control in DelphiDengqingchuang zhangdan jixina liguojie(Intermediate Test DPT. XJ Electric Co., Ltd. XuC

2、hang City, Henan Province 461000)【Abstract】this paper gives a systematic and detailed introduction of how to design custom control in Delphi though an example program。The code of this custom control is not technically difficult。its intended to illustrate how to design user control in Delphi,includin

3、g how its created by appwizard、code design、icon design and the issue of the control。【Key words】control、custom control、Delphi controlDelphi语言受众多程序员追捧,主要原因之一就是它有很多第三方的控件可供使用。很多资深的Delphi程序员都把自己积累的函数、过程等设计成控件,以方便使用,提高开发效率。本文通过一个只允许输入数字、并且可以设置输入值范围和小数点位数的编辑框控件的设计,详细介绍了控件的实现方法。该控件继承自edit控件,控件单元名称为NumEdit,

4、控件类名称为TNumEdit。控件的实现主要分为4个阶段:1、 建立控件原型。2、 设计控件功能代码。3、 设计控件图标。4、 安装发布控件。下面对这四个阶段进行介绍。 1、 建立控件原型我们可以通过Delphi向导建立控件原型。通过Delphi菜单File-New-Other打开New Items对话框,然后在New属性页中选择Component,点击OK,弹出New Component对话框,在该对话框中设置控件的基本信息,如下图(图1.1):图1.1Ancestor type:选择你的控件要继承的类,我们选择TEdit(StdCtrls)。Class Name:要创建的控件的类名称,我们

5、设置为TNumEdit。Palette Page:该自定义控件发布后将要停靠的控件面板。Unit file name:该控件代码存放路径。设置好上面信息后,点ok按钮,向导自动生成最原始的控件代码,如下:unit NumEdit; /单元名称Interfaceuses /该控件需要调用的单元 SysUtils, Classes, Controls, StdCtrls;type TNumEdit = class(TEdit) /控件类,继承自TEdit private /私有成员 Private declarations protected /保护成员 Protected declaration

6、s public /公有成员 Public declarations published /发布成员 Published declarations end;procedure Register; /过程声明implementation/下面函数功能是将控件TNumEdit的图标显示在Samples面板上。procedure Register;begin Register Components(Samples, TNumEdit); end;end.到目前为止,控件TNumEdit 已经具备了Tedit编辑框的所有功能,下面我们就可以在这个基础上设计我们需求的功能了。2、 设计控件功能代码 首先

7、我们知道,该控件功能需求有三个:1) 只允许输入数字。2) 可以设置输入范围,即可以设置输入数字的最小、最大值。3) 可以设置输入数字的小数点位数。基于上面需求,我们的控件需要做如下几个方面处理:1) 继承控件接收的按键事件,如果按的不是数字键直接返回。2) 增加控件可以接收的最大值Max、最小值属性Min。3) 增加控件小数点设置的属性dotnum。4) 响应控件焦点离开消息(cm_exit),在这里处理控件中录入的内容,使其大于Min、小于Max且小数点位数等于dotnum。下面结合该控件代码,通过代码的注释介绍我们详细的处理过程。unit NumEdit; /单元名称interfaceu

8、ses /该控件需要调用的单元SysUtils, Classes, Controls, StdCtrls;typeTNumEdit = class(TEdit) /控件类,继承自TEditprivate /私有变量声明 FMin, FMax: Extended; /编辑框允许输入的最大最小值。 Fdotnum:Cardinal; /小数点后位数个数 procedure CMExit(var Message: TCMExit); message cm_exit;/响应焦点离开控件的消息protected /保护procedure KeyPress(var Key: Char); override

9、; /重载按键事件procedure SetMin(value: Extended);procedure SetMax(value: Extended); procedure setdotnum(value: Cardinal);public /公有constructor Create(AOwner: TComponent); override;/重载构造函数function formatstr(s:string):String; /规整字符串procedure delaexit; /处理使控件中的内容published /发布三个属性,分别表示最小值,最大值和小数点数 property Mi

10、n: Extended read FMin write SetMin ; /;property Max: Extended read FMax write SetMax ; /;property dotnum:Cardinal read Fdotnum write setdotnum ; /;end;procedure Register; /注册过程声明implementation函数描述:规整字符串,使其小数位数为:fdotnum。 参数s:要处理的数值的字符串形式。 返回值:字符串形式的数值,小数位数为fdotnum。function TNumEdit.formatstr(s:string

11、):string;vari,j:integer;len:cardinal;begini:=pos(.,s); /在s中定位小数点if i0 then /如果存在小数点begin if i=1 then /如果小数点在第一位,则在前面加0 s:=0+s; len:=length(s)-pos(.,s); /获取小数点后的位数 if Fdotnum=0 then /如果小数点个数设置为0,则取小数点前的部分 s:=copy(s,1,length(s)-len-1) else if len0 then /设置的最大值大于0的处理 begin if (stemp1=) and (curvalueFMa

12、x) then /为正且大于最大 curvalue:=FMax end else if FMax=0 then /等于0的处理 begin if (stemp1=) then curvalue:=FMax; end else if FMaxabs(FMax) then curvalue:=abs(FMax); end;/下面对最小值处理,分为大于0,等于0和小于0三种情况 if FMin0 then /最小值大于0 begin if (stemp1=) and (curvalueFMin) then /支持负数 curvalue:=FMin else if stemp1=- then curv

13、alue:=FMin; end else if FMin=0 then /最小值等于0 begin if stemp1=- then curvalue:=FMin; end else if FMinabs(FMin) then curvalue:=abs(FMin); end;/下面对小数位数进行处理 if curvalue=0 then text:=formatstr(floattostr(curvalue) else text:=stemp1+formatstr(floattostr(curvalue);end;函数描述:重载构造函数,设置自定义控件三个新增属性的默认值 construct

14、or TNumEdit.Create(AOwner: TComponent);begin inherited Create(AOwner); FMin := 0; /最小值默认为0 FMax := 255; /最大值默认为255 Fdotnum:=2; /小数点个数默认为2个 Text := formatstr(0); /text继承自Tedit,设置默认显示为0.00end;过程描述:响应焦点离开控件的消息:cm_exit。在焦点离开时调用过程delaexit()处理控件内容 procedure TNumEdit.CMExit(var Message: TCMExit);begininher

15、ited; /继承父类Tedit的响应delaexit();/处理控件内容end;/设置最小值procedure TNumEdit.SetMin(value: Extended);begin FMin := value; if FMax FMax then FMin := FMax;end;/设置小数点位数procedure TNumEdit.setdotnum(value: Cardinal);begin Fdotnum:=value; Text := formatstr(0);end;函数描述:重载按键响应,只响应输入数字和回车procedure TNumEdit.KeyPress(var

16、 Key: Char);/override;begininherited KeyPress(Key);/继承父类if key in #13 then /如果按回车键,处理控件内容 delaexit; If not (key in #45,#46,#48.#57,#8) then /如果非数字键,不响应begin key:= #0; /该语句使你按键时候,控件不予处理、不显示end;end;注册控件 使TNumEdit显示在delphi控件面板的Samples面板procedure Register;beginRegisterComponents(Samples, TNumEdit); end;

17、end.上面的编码设计使该控件已经满足了需求中提出的功能要求。3、 设计控件图标Delphi控件要使用一个图标显示在Delphi的控件面板上供开发者使用(由上面设计可知,该控件要显示在Delphi控件面板的samples面板上),控件的图标有如下要求(注意图标文件名和图标名称的区别,下面有讲述):1) 图标文件名称为dcr(后缀名为dcr)格式,该类文件可认为是图标的容器,其中可以包含多个图标。2) 图标文件名要与控件单元的文件名一致,如该控件的图标文件名应该为NumEdit.dcr。3) 图标名称要与控件类名称一致。如本控件的图标名称应该为TNumEdit。4) 图标文件要与控件单元文件位于

18、同一目录下,这样发布控件时候才能关联到一块。下面通过用Delphi自带的工具image editor设计本控件的图标来介绍控件图标的设计,步骤如下:1) 通过Delphi的菜单“tools-image editor”打开图标编辑工具。2) 通过file-new-component resource file(.dcr)建立一个图标文件。把它保存在NumEdit.pas相同目录下,名称为:NumEdit.dcr。此时image-editor如下图示(图3.1):图3.13) 在上图中,鼠标右键点Contents,然后在弹出的菜单中选择 “new-Bitmap”打开“Bitmap Properti

19、es”框,设置属性后点“OK”即可创建一个默认名称为 “bitmap1”的位图,把其名称修改为“TNumEdit”,并双击它打开,然后通过画笔等工具设计该位图,示意如下(图3.2):图3.2设计位图根据自己的喜好,这里做简单的设计,设计好后保存即可。至此,该控件对应的图标已经设计好。4、 安装发布控件目前我们已经完成了控件的设计,该控件包含两个文件,代码文件NumEdit.pas和图标文件NumEdit.dcr。这一节介绍如何把该控件安装到Delphi的控件面板上供开发者使用,步骤如下:1、 把这两个文件拷贝到一指定目录下,对于自定义控件,作为一种好的开发习惯,我们一般在Delphi安装目录下

20、建立custom目录并把自定义控件拷贝过去。这里我们也建立customnumedit目录,然后把该控件的文件拷贝到该目录下,如下:C:Program FilesBorlandDelphi7customnumedit2、 在Delphi库中增加该控件的路径。通过菜单:“tools-environment-options打开environment-options对话框,选择library属性页,然后单击library path后的选项按钮打开Directories对话框,在该对话框中手工录入或者通过选项按钮把控件路径填写进去,如图(图4.1)所示:图4.1点击“Add”按钮,点击OK,回到“env

21、ironment-options”对话框,再点击 “OK”完成库文件路径添加。3、 控件安装。通过前两步的处理,我们就可以安装控件了,通过菜单“Component-Install Component”打开控件安装对话框,点into existing package属性页中的unit file name后的Browse按钮,选中要安装的控件文件NumEdit.pas,然后点“OK”按钮即可。系统提示是否编译,选择编译后便可以把该控件安装到Delphi的控件面板,如下图:图4.2到目前我们已经完成了一个控件从最开始的需求分析到最终发布使用的全部过程。好了,设计程序的时候,把上面的控件(红色的,在控件图标设计中设计的那个图标)拖到Delphi的窗体上、通过设置控件的属性就可以使用该控件了。简单吧,快动手设计一个自己的控件吧。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2