Board logo

Subject: 窗体控件的自动TAB值的Bug [Print This Page]

Author: happyprogram    Time: 2004-11-26 12:21     Subject: 窗体控件的自动TAB值的Bug

建一个新窗体,按先后顺序分别放置一个ComboBox、Button、Edit和DateTimePicker,其位置从左到右(DateTimePicker最后放,但放在Button和Edit中间),放置结束后TAB顺序为:ComboBox-Button-Edit-DateTimePicker。
然后选中所有控件,水平中心对齐,再自动设置TAB值,
此时,TAB顺序变为Button-ComboBox-DateTimePicker-Edit
而我希望得到的顺序是ComboBox-Button-DateTimePicker-Edit(水平从左到右)

不知道大家有没有发现这个问题?

[ Last edited by happyprogram on 2004-11-26 at 12:25 ]
Author: zjy    Time: 2004-11-26 14:08

TabOrder 设置有一些参数可以控制,默认的排序是先垂直后水平,以控件左上角计算,Button-ComboBox-DateTimePicker-Edit这几个控件的高度不同,使用默认的方法排出来的就不好看了,你可以试试先垂直后水平排序。

不过这些参数也都有局限性,要完全智能化的排序,这个算法不太好做,呵呵。
Author: happyprogram    Time: 2004-11-26 17:03     Subject: 管理员好

我上述的测试是在以下配置下进行的:

排序方式:以垂直方向为主
附加处理:控件分组
其它设置:处理时包含所有子控件,计算位置时根据控件中心来判断。

再者,四个控件中,Button控件的高度是25,其他三个的高度为21,均为默认值。

在上述情况下,自动设置后就不是预期的顺序

然后,我又试了一下,把Button的高度改为21,则自动处理Tab后顺序是正确的。

是否因为在取控件中心坐标时,由于是高度是奇数,而产生了误差?导致认为高度为25的Button的中心位置比高度为21的其它控件的位置要高一些,所以将Button排在了第一个(TAb为0)

编程过程中几乎每个窗口都要用好几次自动设置Tab顺序,希望管理员能够抽时间修改一下这个问题。
Author: zjy    Time: 2004-11-26 17:16

好的,有空我再好好来改进一下TabOrder排序的算法。
Author: happyprogram    Time: 2004-11-27 10:48     Subject: 谢谢管理员

专家包越来越完善了,每次看到有新功能加入,都非常高兴!

感谢大家的辛勤劳动!

现在开发的过程中,经常需要对多个dfm文件内容进行搜索替换,不知道能不能在批量文件替换功能中加入对dfm的支持?




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0