Delphi的BUGS之我见[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 hank 的 blog

 

下面是本人在delphi实际的开发中发现的问题,希望能同大家一起交流。

 

1、tdatetimepicker的错误

tdatetimepicker控件在读写日期时有很多错误,主要是日期不能及时刷新。

随便举一个例子:

新建一个form,然后添加一个tdatetimepicker控件,随便放一个浮动型按钮例如tspeedbutton或者ttoolbutton等,相信这种方式用的会很多!

在浮动按钮的click事件中加入很简单的代码:

showmessage(formatdatetime('yyyy-mm-dd',datetimepicker1.date));

此时你通过直接修改tdatetimepicker的时间值来修改日期,然后激活浮动按钮的click事件,你会发现在tdatetimepicker中反映出来的日期并不是tdatetimepicker真实的日期!多试几次你会发现问题更严重!

相信borland公司的人应该测出了此错误,但是没有修复!

现在似乎明白为什么没有日期型的db控件!

 

2、tdbgrid的错误

如果你是通过tdbgrid直接读写数据,你会发现问题很致命!

随便举一个例子:

新建一个form,然后添加一个tdbgrid,添加相应的数据关联然后激活数据源,随便放一个浮动型按钮,相信这种方式用的也比较多!

在浮动按钮的click事件中加入很简单的代码:

showmessage(adoquery1.fields.fields[0].asstring);

然后运行!

运行时首先选中tdbgrid中的一条数据(已经默认选中一条),然后滚动鼠标的滚轮翻滚数据,就象大家平时上网是滚动浏览网页或者在excel数据区滚动浏览一样,然后在tdbgrid中单击鼠标,你会发现此时在tdbgrid中实际控制了两条数据,继续则可能出现多条!

继续下去!

如果你不停的下翻直至tdbgrid中的光标在鼠标的游标之下然后点击,然后激活浮动按钮的click事件,你会发现在tdbgrid中激活的数据与数据源中实际的当前数据根本就不一致!

在实际应用中相信会碰到这种情况:我明明选择是这条数据,但进行后继操作的为什么不是这条数据?

 

3、tquickrep的错误

tquickrep历来以使用简单,功能灵活(当然是通过添加代码来实现)而著名,当然她的缺陷之多也同样有名,这当然也不是完全delphi的问题。

随便举一个例子:

系统主窗口是的formstyle为fsmdiform类型,系统中的各个窗体采用模式窗体(showmodal),这是一个很普通的应用。

在实际中系统主窗口往往是最大化(windowstate = wsmaximized)的,如果在模式窗体中预览报表:

quickrep1.preview;

如果你把报表预览窗口最小化,你会发现你根本就不能关闭任何窗口!除非通过alt+ctrl+delete强行关闭!

本文关键:Delphi BUGS
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top