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

制作用于日期时间型字段的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中使用安全可靠。

中兴携手英特尔发布基于X86的Geek手机 应用生态建设仍需努力 微软将WP周期延长至36个月 明年推企业功能包 Gartner:全球PC出货量二季度下滑11% 联想成全球最大PC厂商 用来简化开发任务的20个JavaScript类库 煎饼,娇妻,Belief:黄太吉的移动互联网营销 AWS大降价:最高打两折 推荐十款超赞的Google Chrome扩展插件 在团队中进行单元测试/TDD的12条经验 小米游戏中心6月数据报告:页游转手游怎么搞? 司机请专心:安全是车载APP要解决的大问题 Windows 8之父Steven Sinofsky:跨平台开发会为什么越来越难? 一些达成共识的JavaScript编码风格约定 语义技术——微软、谷歌和Facebook的必争之地 初创公司PlumGrid:前思科工程师的“逆袭之战” Firefox OS智能手机继续扩张 德国市场今日开售 如果让莎士比亚、海明威编写JavaScript代码 开源的数据可视化JavaScript图表库:ECharts 已迭代1.3亿年的分布式系统——Anternet 软硬整合:14个可改变世界的Kickstarter项目 是时候放弃MySQL的五大理由 比特币钱包Coinbase推出即时交易功能,无需银行转账手续 回收不活跃邮箱续:雅虎高管称能保证前用户信息和数据安全 移动周报:IT民工携娇妻转战传统行业,黄太吉的移动互联网营销 独立游戏开发的传奇!LIMBO开发商Playdead公司CEO专访 Firefox OS模拟器4.0正式发布 支持模拟触摸事件 莫轻言已成功部署大数据,也许你离达标还相去甚远! 基于Java的四大开源测试工具 Firefox OS:称霸移动市场?我们的计划更长远! 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现 传苹果为iWatch招兵买马 以确保明年发布新产品 降价高达1200元的Surface RT,并不值得你购买 GetNextChild的问题 高分求教(加上下面两贴共220分)Delphi怎样编写ISAPI过滤器 运行Windows 98磁盘扫描程序后很多文件都丢失了,请问有办法恢复吗? 运行Windows 98磁盘扫描程序后很多文件都丢失了,请问有办法恢复吗? 请教:编译的时候为什么说不认识WindowAdapter? 这个站值多少钱? 请教各位同仁有关数据共享的问题 怎样防止网页提交时,点击IE后退按钮? 请问如何解决DataReport无法及时更新的问题!! Tserversocket and Tclientsocket 怎么不能用于INTERNET???? 提供VC6的类库大全的电子版! StringGrid单元的颜色 我遇到难题了。谁来救救我???? mysql數據庫上傳后怎么連接???? 如何安全删除LINUX? 请教,如何将dbgrid中的数据直接打印出来? 明天就要交毕业论文了,有谁能帮我翻译一下摘要?100分!(我最多只能给这么多分了) 求一个com+的最简单例子 powerman_lyj(刘瑜江),能说的再详细点吗,具体的菜单或快截键是啥, 我的电脑是联想同禧品牌机,98年买的,价格是7999元。由于各种学习软件的增加,机器的配置已经无法满足实际的需要,所以本人打算升级我的 Analysis Patterns:Reusable Object Models 关于编写ASP.NET程序的工具使用问题 在submit的click事件中调用check(),当条件不符合时如何让submit终止? 申明CRecordSet的子类为什么不行呢? 高手请进!!!!高手请进!!!!(100分!!!!!) 请问如何用程序改变本机在局域网中的IP地址? help! 为什么session不可用?iis服务器配置错在那里? 一个关于数据库的问题,望各位高手多多指教.(很急) 大个大姐快开金口吧,从我启动PB 开是教我吧,没想到新手这么难呀!(共送700分!!!) 今天这件事说没完就没完,谁的面子我也不给,结了我就再发,删ID就换马甲,如果想封IP那就谢谢了,能让我下定决心离开 这个页面如何? MDI主窗口的背景,怎么显示阿? 高分求助!如何用程序获取显卡的物理地址? 请问LOEBBS的系统占用时间 在Tomcat4.0环境下,运行JSP,程序出错? 向大家推荐一个品质计数计量图控制程序 来者有分,班长请高抬贵手,不删此贴,谢谢 谁知道哪儿有cloudscape数据库的安装程序? 老大,infopower2000的密码是多少阿? 100分求<壮志雄心>8-20集的下载 能讨论一下 VB开发财务相关软件的经验吗,各位高手??(UP都有分) 简单的问题,送分 请教:ADO方式连接Oracle数据库时出现:多步OLE DB错误,请检查每个OLE DB状态,怎么办? 错乱 如何用jdbc连接oracle 老大,infopower2000的注册号,密码是多少阿? 向大家推荐一个品质计数计量图控制程序,来者有分,班长请高抬贵手,不删此贴,谢谢 线程管理 向大家推荐一个品质计数计量图控制程序,来者有分,班长请高抬贵手,不删此贴,谢谢 能不能提供一些有关图像分割的算法和实现代码!谢谢 如何实现语音聊天技术~需要什么? 如何实现语音聊天技术?需要些什么 拔河所蕴含的物理知识:为什么两边所使用的拉力相等?是平衡力还是反作用力? 步步高家教机H9,这是啥情况 灵魂伴侣用英语怎么说? 一根绳子能够承受的最大拉力是100N,则这根绳子是否能掉起10kg的物体 步步高家教机h9怎能截屏? 请问说男生闷骚是什么意思?女生喜欢闷骚的男生吗? 两根绳子竖直拉着一根水平放置的木棍,每根绳子承担的拉力是多少?是木棍重力的一半吗? 有个问题调查希望有好心人帮我看看,1、\x05请问您认为职业生涯规划是否有必要,如果有必要,职业生涯规划能给您的职业生涯带来什么样的作用?2、\x05请问您如何看待职业生涯的规划和您是 灵魂伴侣的英文怎么写啊 灵魂的伴侣 译英文灵魂的伴侣用英文怎么说?一个单词,《花样男子》里有的. 灵魂伴侣用英文怎么说开心 说具体一点,具体指哪些人? 我爱这个小伙伴,求翻译 谁知道“灵魂伴侣”的英文写法灵魂伴侣 的英文名字到底最正确的是怎么写啊,怎么答案不同呢,叫我如何选择啊? 灵魂伴侣 用英语 用F=100N的拉力拉质量为20kg的筐子沿水平地面运动,拉力与水平方向成37°,筐子做匀加速运动,求筐子加速度动摩擦系数为0.5 19.如图,在等腰Rt三角形ABC中,D为BC中点,DE垂直AB,垂足为E,过点B做BF平行AC交DE的延长线于点F,连接CF》问:(1)求证AD垂直CF;(2)连接AF,试判断三角形ACF的形状,说明理由附加100分补充条件:角A 灵魂伴侣英文怎么写 在水平路面上有一只质量为20kg的箱子,用拉力F=100N拉着箱子在路面上前进,拉力和路面的夹角为30度,箱子和地面间的摩擦因数为0.3,求箱子的加速度. 英语补空 如图,OC、OD是角AOB中的两条射线,且角AOC:角COD:角DOB=1:2:3,OM是角AOC中的射线,使得角MOC:角COD=1:4,ON是角DOB中的射线,使得角COD:角DON=4:3,若角MON=80度.求角AOC、角COD、角DOB的度数(需要过 有一弹簧不受拉力时长15cm,在测量范围内,当受到6N的拉力时弹簧长18cm当弹簧全长24cm时应施加多少牛拉力麻烦把过程写一下,要按照写物理题的过程写,谢谢!麻烦了! 补问,下次的“客房升级”英文问题在国外酒店,如何主动提出免费“升级客房”的要求较得体?最让酒店容易呢? 如图是三段互相垂直的杠杆:AB=a,OB=2a,OC=3a杠杆绕O点转动,在C端挂一30N的物体,为了使杠杆水平平衡在A端应最小施加一个多少N的力?求过程和结果 谢谢你对我们产品的喜爱,这句话英文怎么说? 关键就是喜爱用哪个词表达好? 英语怎么补我从初二开始英语都没怎么学,现在高二了,想学了才发现一句完整的句子都翻译不出来,更别说写了,初一学的一点也忘完了 昨天晚上做梦梦到鬼那个鬼是个小女孩 还好像是在梦里让我害死的 本来是想走的 打了个车但是那个司机带我围着那个鬼的旁边转了圈 然后那个鬼就追我 然后我就吓醒了 可是醒了全身都不 品牌忠诚度和产品本身有关 英文翻译这句句子~ 补你一个英语问题You are really beautiful today in this yeallow coat?A.Never say that.B.Thanks 一块静止在水平桌面上,已知木块与桌面间的动摩擦因数u=0.3,木块重力G=30N.木块与桌面间的最大静摩擦力等于滑动摩擦力.(1)用F1=5N的水平推木块时,求木块所受摩擦力的大小.(2)要使木块 不同形状的雪花形成原因明天就要交了, 大小相同,质量分别为mA和mB的AB两球,系在一细柔绳的两端,放在光滑水平面上细绳被两球拉直在两球连心线上,当B球收到一大小未知,方向与x轴成α角度的通过B求中心的水平冲量作用时,获得大 晚上做梦,梦到鬼会怎么样呢? 氧化银纽扣电池把什么能转化为电能Zn+Ag2O=ZnO+2Ag ,把什么能转化为电能? 雪为什么会形成雪花那样的形状非常完美的图案啊~它是怎么形成的? 如图,静止在水平位置上的物体A重30N,滑轮另一端有物体B,滑轮重1N,弹簧测力计示数25N,B的重力为( ) 氧化银纽扣电池的电压是多大? 岗位能力指什么?怎么定义的? 动能相同的A、B两球,它们的质量分别为mA、mB,且mA>mB,在光滑的水平面上相向运动,当两球相碰后,其中一球停止运动,则可判定: ( )A.碰撞前A球的速度小于B球的速度B.碰撞前A球的动 氧化银电池每个电压是----- 雪花是什么形状的? 请问如何辨别马铃薯淀粉的质量好坏? 物体A在水平力F=40N的作用下,沿着倾角为60度的斜面匀速下滑,物体重力40N.求斜面对物体A的支持力和物体A对斜面的摩擦因数 女人的高品质怎么定义? 急:说明财务会计中成本与费用、费用与支出的区别?《会计基础》的简答题;谢了! 河姆渡人的原始农业生活比北京人有了哪些进步? 帮我解释一下什么是”自然式服务,内涵式管理”自然式服务,内涵式管理 分开来解释,请能畅谈的多谈谈.多给分~ 杠杆工作的五个名词:支点:______ 动力:_____ 阻力:______ 动力臂;____ 阻力臂:_____ 电子计算机所用的纽扣电池的两极材料为锌和氧化银,电解质溶液为KOH溶液,其电极反应式是;Zn+2OH- —2e-=ZnO+H2O和Ag2O+H2O+2e-=2Ag+2OH-.怎样判断正负极 人只有在工作中才能体现人的价值这句话怎么解释求答案 高一物理题将一小球以初速度V从地面竖直上抛后,小球先后经过离地面的高度6m的点用时4s.若要使时间缩短为2s则初度V0应(g=10m/s² 不计阻力)A 小于VB 等于VC 大于VD 无法确定 一颗氧化银纽扣电池的电压是多少伏? 用两轻绳的末端各系质量分别为mA、、mB的带同种电荷的小球,两绳另一端同系于O点,如图,绳长分别为LA、、LB,且mB=2mA,LA=2LB,平衡后绳与竖直方向夹角分别为 、β.关于两夹角的大小关系,正确的 有个女孩说觉得我很闷骚,是什么意思啊?求解释 晏子使楚解释我急很急麻烦给我 A,B两物体,质量分别为mA,mB且mA≠mB,由一根强度有限的轻绳连接 (高一物理)A,B两物体,质量分别为mA,mB且mA≠mB,由一根强度有限的轻绳连接,放于光滑的水平面上,如图,现施水平拉力向左拉A或向 如图所示,在水平桌面上放一个质量为2kg的木块A,已知木块与水平桌面间的动摩擦因数μ1=0.4.(图片可放大求:(1)使A沿桌面做匀速直线运动时的水平拉力F1:; (2)如果在木块A上加一 万用表怎样测量钮扣电池的电流 用英文补一个句子My brother _____4 闷骚型女人是什么意思,今天一朋友说我属于闷骚型女人,这是他们几个男人讨论出来的结果,是好还是坏?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘