说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

制作用于日期时间型字段的DELPHI数据感知控件

HTML文档下载 WORD文档下载 PDF文档下载
制作用于日期时间型字段的DELPHI数据感知控件

用DELPHI开发C/S应用方便而快速,因为它拥有大量易于使用的数据访问和数据感知控件。然而万事总是难以完美,DELPHI的DBEdit控件用于输入日期时间型字段却很不方便,为了改善这一缺点,笔者开发了一个DBDateTime数据感知控件,大大方便了时间和日期的输入。

创建一个构件时,最重要的一步是选择正确的父类,这样可以减少代码的编写。DELPHI的构件库中已有一个TDateTimePicker构件,可以以下拉日历或利用SpinButton递增、递减的方式方便地输入和改变日期、时间,但它没有数据感知的能力。因此,我们可以以它为父类,派生出一个新的控件,加上能与数据集通信的数据感知功能。

数据感知控件通过DataLink对象与DataSource进行交互,所以为控件增加数据感知能力需要创建一个TDataLink(或其派生类)对象作为控件的成员,并为控件创建公开的DataField和DataSource属性;然后需响应TDataLink对象的OnDataChange和OnUpdateData事件。下面是控件的主要源代码,并带有相应的注释:

{定义从TDateTimePicker派生的TDBDateTime类。注意,在单元接口的Uses中应加入DB,DBCTRLS引用}type

TDBDateTime=class(TDateTimePicker)

private

FDataLink:TFieldDataLink;

//TFieldDataLink是TDataLink的派生类,处理单个字段与DataSource的交互

procedureDataChange(sender:Tobject);

//当DataSet的记录改变(如浏览记录)时触发OnDataChange事件,DataChange将作为该事件的事件处理句柄

procedureUpdateData(sender:Tobject);

//更新DataSet前触发OnUpdateData事件,UpdateData将作为该事件的事件处理句柄

functionGetDataSource:TDataSource;

procedureSetdataSource(value:TDataSource);

FunctionGetDataField:String;

procedureSetdataField(Value:String);

procedureCMexit(varMessage:TCMExit);message CM_EXIT;//当控件失去焦点时触发CM_EXIT消息

protected

procedureChange;override;//控件中日期、时间改变时触发OnChange事件

procedureNotification(AComponent:TComponent;

Operation:Toperation);override;

//当某一控件从FORM上移走时DELPHI的IDE调用该方法通知其它控件

public

constructorCreate(AOwner:Tcomponent);override;

destructorDestroy;override;

published

propertyDataSource:TDataSourcereadGetDataSource

writeSetDataSource;//为控件增加DataSource属性,使它能与DataSource构件连接

propertyDataField:StringreadGetDataField

writeSetDataField;

end;//为控件增加DataField属性,

使它指向代表某一字段的TField对象

procedureRegister;//注册构件

implementation

procedureTDBDateTime.CMExit;

begin

try

FDataLink.UpdateRecord;

//控件失去焦点时更新DataSet,这将触发OnUpdateData事件

except

Setfocus;

raise;

end;

DoExit;

end;

constructorTDBDateTime.Create(Aowner:Tcomponent);

begin

inheritedCreate(Aowner);

//创建DataLink对象,挂接OnDataChange、

OnUpdateData事件处理句柄

FDataLink:=TFieldDataLInk.Create;

FDataLink.OnDataChange:=DataChange;

FDataLink.OnUpdateData:=Updatedata;

end;

DestructorTDBDateTime.Destroy;

begin

FDataLink.OnDataChange:=nil;

FDataLink.OnUpdateData:=nil;

FDataLink.Free;

inheritedDestroy;

end;

functionTDBDateTime.GetdataSource:TdataSource;

begin

result:=FDataLink.DataSource;

end;

ProcedureTDBDateTime.SetDataSource(Value:TDataSource);

begin

FDataLink.DataSource:=Value;

end;

functionTDBDateTime.GetDatafield:String;

begin

result:=FDataLink.FieldName;

end;

procedureTDBDateTime.SetDataField(value:String);

begin

FdataLink.FieldName:=value;

end;

procedureTDBDateTime.DataChange(Sender:Tobject);

begin

DateTime:=now;

//若控件连了活动的DataSet则数据集变动时

控件显示当前记录的相应字段值

ifFDataLink.Field nilthen

ifFDataLink.Field.Text ''then

DateTime:=FDatalink.Field.AsDateTime;

end;

ProcedureTDBDateTime.UpdateData(sender:Tobject);

begin

FDatalink.Field.AsDateTime:=DateTime;

//用控件中的日期、时间更新相应字段

end;

procedureTDBDateTime.Change;

begin

//当用户改变了控件中的内容时将DataSet置为编辑状态

FDataLink.Modified;

ifnotFDataLink.Editingthen

FdataLink.Edit;

inheritedChange;

end;

procedureTDBDateTime.Notification(AComponent:

TComponent;Operation:TOperation);

begin

inheritedNotification(Acomponent

Operation);

//当与控件相连的TdataSource

被删除时将控件的DataSource属性置为空

if(Operation=opRemove)and(FDataLink nil)

and(AComponent=Datasource)then

DataSource:=nil;

end;

procedureRegister;

begin

RegisterComponents('DataControls'

[TDBDateTime]);//控件注册后安装于DataControls页

end;

end.

本控件安装后能以下拉日历和递 增递减方式改变数据库的日期时间型字段,并能以长、短两种格式显示日期,方便实用。控件在DELPHI3、DELPHI4中使用安全可靠。

倒计时20天!金玩奖各大奖项花落谁家由你主宰 宅男程序员福利:来自纽约的28位智慧与美貌并存的IT女神 创季度记录:苹果发布第四季财报 iPhone仍是苹果商业心脏 在破晓中行走:一位盲人开发的盲人应用 腾讯云俱乐部成都站——云时代手游开发:用数据说话 首届微App峰会将在MDCC2013上举行 微信易信百度新浪等平台开发商云集 TUP Masters第七期:C++大师Lippman论编程新范式Hugo OpenCL用于13个微型计算机领域的经典案例 从测试数据来看Node.js和Java EE的性能区别 工作效率低下?业内人士建议你切勿追求完美 Mozilla发布可视化在线跟踪工具Lightbeam 望向海外:十大移动应用开发外包公司 Facebook支撑万亿Post搜索背后的技术窥探 云OS:共创智能化生态圈 云计算,让游戏世界更加精彩 360推儿童卫士手环,你怎么看? 量产谈判正在进行时:谷歌手表或比Google Glass先上市 Mozilla发布新版Firefox 25 提供支持Web Audio API UC产品总裁何小鹏:轻应用,做什么?怎么做? 高德携手阿里云发布“LBS云”,账户打通只是第一步 最后2天!2013移动开发者大会5折抢票倒计时 大数据如何改变在线广告业? 摩托罗拉推开源硬件平台计划Project Ara 七个垂手可得的敏捷开发工具 微信新版公众平台调整细节381处 300/次认证费引争议 libgit2:纯C语言实现的Git开发包 MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 关于统计的问题 马甲识别诸法之我论(转贴) 弱弱地问一个问题。 如何用键盘弹钢琴? ASL是什么? how to 高考 装了win2003之后调试asp.net还要不要再装其它软件? 学c++出路 我把数据库的连接池作到Bean中,麻烦就此产生,请高手帮我解决??? 成熟OA系统,B/S模式,三十几个模块,四十几个功能,超底价出售原代码,包你满意,有意者留个油箱,我把部分文档给你发过去,如果你离南 怎样装微软官方论坛? 成熟OA系统,B/S模式,三十几个模块,四十几个功能,超底价出售原代码,包你满意,有意者留个油箱,我把部分文档给你发过去,如果你离南 win2000安装后,每个一秒种读一次盘,请帮我解决问题。谢谢! 谁还来个高程QQ群? 大家都上过哪些收费电影下载网站? 请问那里有好的中文输入法下载。我的是redhat72 在线等待----100分,急!!! 光标定位问题 asp mail question 一些比较菜的问题 实用问题,在触发器中如何退出? 怎样来通过我的程序来控制另一个程序的下拉菜单 VS 2003哪里有下?VB的GRIDCTRL如何调整各列的宽度? 请问如何把datagrid中的数据到出到Excel中做报表 DLLHOST.EXE是什么东西?它占用了CPU的99%,服务器慢如蜗牛,ASP文件不能正常运行,救命啊!!!!!! 急用!谁能提供五子棋的算法和设计? 谁有无限制的activethread控件,通知一下, 很急! 谁能提供五子棋的算法和设计?急用! 请教一个WebLogic问题,请高手帮忙! 怎么知道DLL里函数以及它的参数 有关IE主页被恶意修改的问题请教。。__急! 急用!谁能提供五子棋的算法和设计? set mail=server.createobject("cdonts.newmail") 错误,高手指点一下!!! 谁能提供五子棋的算法和设计?急用! 如何解决??? UNIX中文录入的问题 菜鸟求一个语句 500分给前辈 大家都来看看这些女人(三分长相,七分打扮) 兄弟们,帮忙提供个参数~送100分了,承蒙关照了 调查:你现在用哪种开发工具,感觉如何? 防火墙经常出现类似记录信息 请问.pdg格式的电子图书如何浏览 新版net2003web Service 奇怪的FileNotFoundException错误 求救:支持汉字的OCR控件。给个制作思路也成。 在网络中运行in.readline 的时候会不会等待有流传来才读取的??很矛盾 ODBC的作用?=我的机器上没安任何数据库管理系统(如:access,foxpro等)但我可以用asp访问某个.mdb文件,是吗? 怎样用程序实现把FTP站点映射为一个驱动器? 虚拟光驱是怎样做的? //非常奇特的系统启动现象,进来看看// 英语教师证怎么考得 ni hao 中文是什么意思 三九天为何最冷 谁能总结新概念背诵的经验? 词语hao叟怎么写? 22-36+55-12+2221-999= 例:语文是滋味甘醇的美酒,让人回味无穷.读书是.大自然是. 一个卫星正在绕行星运行,突然速度减小,它会下落还是上升,为什么 探索的诗句词文 参加一百米跑竞赛的运动员在冲刺过程中为什么不能看作是一个质点我觉得可以看做质点的.但答案里说不是质点,是我错了么?只要是机械运动就能被看做食是质点么,在不考虑大小和形状的时 some of his books are very exciting这是我在书上找的句子如果我将他变成some his books are very exciting这个语法上有错吗?如果没错,请答答some有什么词性?当他是some of时是什么词性?当他是some his books句子 古埃及探秘的好词好句1111111111 参加百米跑竞赛的运动员能否视为质点 Here are some books of his.此句中的“his”是名词性物主代词还是形容词性物主代词? 研究什么组词 这个乾造是什么意思? 百米冲刺的运动员能否看成质点quickly and the reason of this probiem He has__books in his study. A选项 several tho usands B选项 some thousands of coeur battant 谁能总结下新概念语法的表示强调的方式?跟大家分享下 成语对对子 雪中送炭——() 伶牙俐齿——() 英语翻译 31种雅思口语高分必背公式谁有啊? 一张彩纸长5分之4米宽5分之2米,做幸运星用去了8分之3,用去( )平方米这张纸的( )没用 不造是什么意思? 求新概念语法的表示强调的方式?谁可以提供下 已用去彩纸的7分之5,这里把( )看作单位"1",( )是( )的7分之5. 手指在造是什么意思? 照样造句 语文,是滋味甘醇的美酒,让人回味无穷语文,是滋味甘醇的美酒,让人回味无穷;语文,是____________,_________;语文,是____________,__________. 乾三连到底什么意思啊? ord(‘A’)什么意思?如题 仿句;语文是滋味甘醇的美酒,让人回味无穷.例句:语文是滋味甘醇的美酒,让人回味无穷.家是__________,让人__________.童年是__________,让人__________. 乾到底长什么样?老戴着眼镜,不知道长什么样 进口里ord是什么意思进口INVOICE里的ORD NO: 应该是 te ke, 还是 tai ke ?teuk 怎么发音???? 鹤立鸡群的鹤比喻是以什么为喻体我刚刚和同学吵,我同学说鹤立鸡群的意思是一只像鹤一样的鸡站在一群鸡里面,而我的意思是一只鹤站在一群鸡里面.哪个是对的 ord List 1 pi ke jiao jia 怎么写pi第2声ke第3声jiao第1声jia第1声 He never buys()()()his son 他从没给儿子买过任何礼物 middle-east参加德国展!Middle-east or Middle-East 后者的E需要大写吗? 请问鬼魂附体(俗称“撞客”读作“zhuang ke”)是怎么回事?听说过好多家长们讲有人撞客,就是被鬼附体,其症状是这样的:一个什么人活得好好的,一下子冒出几句不符合他(她)身份的话, He buys a shirt for his son 的同义句 yangzhou is in the of Jiangsu.A.east B.northeast c middle D south 用数字万用表测量电池放电电流,黑笔插在COM口上,红笔插在20A口上,刻度调在20A上,串联在电路中,红笔笔我是用来给手机充电的,总容量好像是3800MA电池盒上写的. 初一几何求助 意思oil prices reacted sharply to news of the crisis in the Middle East 夕阳朝乾是什么意思 中秋节过节费多少? toujours de sensation lonley très “终日乾乾”的意思是什么啊? 中秋发多少过节费呀? Toujours hors de 仿句:语文是滋味甘醇的美酒,让人回味无穷.(仿三个) 你们中秋过节费公司发了多少?就今年的 把雪这篇文章改成两篇现代诗是鲁迅写的,南方的雪写一篇,北方的雪写一篇. 终日乾乾 与时偕行是什么意思?急 谢谢. 大人怎么就不明白我们小孩的感受我明明没有去做错事情,他们就说我有.我很想不通 我想学些英语的文学作品,包括现代诗什么的,有哪些推荐? 由于本人没见过世面,所以不知道国乾手机是什么手机.,我要百科一样的介绍, 关于放风筝的感受!500字以上!是感受!当时没有家长!两个人一组!是初赛! 日防相称美国监视日本系伤害盟友信任行媒体称美国将中国日本列为“重点监听国美建议叙问题会议11月举行 仍在做反外交学院举办第十二届全国大学生外交外美政府因关门欠薪成被告埃及前总统穆尔西受审近三成美国人视中国为头号经济强国随笔:阿富汗的冬天“光秃秃”天下飞机,唯快不破:美国将推极音速间美媒曝“棱镜门”内部文件 中日为重点美国新泽西一商场发生枪击事件 暂无人阿富汗的冬天“光秃秃”美媒曝“棱镜门”内部文件 中日为重点摩洛哥一架客机在蒙特利尔机场起火 5宁波一北宋年间古塔出现盗洞 警方已介公益机构联名呼吁删改《沐浴业管理办法浙江第十二届戏剧节启幕 超九成为百元绍兴徐渭墓历波折终有守墓人 工作清苦美建议叙问题会议11月举行 不确信反美新泽西州商场发生枪击 在场民众描述朴槿惠拒与安倍进行正式会晤 日方表示你有木有赶6·18好房子满足的不仅仅是居住顺势起飞,郑西建起“航空小城”警方:垃圾桶爆燃物为鞭炮火药湖南衡阳一军械库爆炸时光荏苒,典藏城心深处家族华章品质先行 九鼎至尊的世家生活服装批发生意就是“快鱼吃慢鱼”“免费送夜宵”七旬老人去意利宝团橱柜高压线穿身过 法桐“发火”了用光影阐释空间郑州体验馆郑州分公司周年庆典圆满结束害她跌入6米深坑盛夏音乐节举办寻香而至,载誉而归绿地品牌发布会盛大举行中国人寿一跳让股民一脸错愕大理石瓷砖走俏终端感恩父亲节活动举行
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘