• 2493阅读
  • 14回复

[求助]发现VFP9的Combo BUG,如何绕过这个BUG? [复制链接]

上一主题 下一主题
 

发帖
2335
浏览券
92115
威望
0
贡献值
0
下载币
135
只看楼主 倒序阅读 使用道具 楼主  发表于: 2018-12-23






1、在表单上放上VFP自带的combo控件
2、用生成器自动生成下拉组合框,不写一行代码
3、运行表单

4、点击小三角展开选择项,出现list,分别多次执行:上下拉到顶、底,选择第一行,选择最后一行。
在VFP中执行点击选择list项偶尔无效,编译exe后出现的频率更高。

bug在:当list项目超过“1页”(少于1页,只有几个选项时是正常的)。

5、当点击list项后,输入框没有反应时,跟踪测试发现:没有执行任何click、mousedown、等事件。
当点击list项后,输入框没有反应时:展开的list会自动关闭折叠。然而没有触发表单的任何事件。

6、当点击list项后,输入框没有反应时,用鼠标点击表单空白处,文本框字符会变成刚刚选择的项。
用鼠标点击表单空白处,文本框字符会变成刚刚选择的项时,却触发了表单的mousedown事件。

gif演示的是:
点击1、点击73,来回点击几次,就会发现:点击73,text里面还是1
此时,没有触发表单的任何事件。再用鼠标点击表单空白处,文本框字符会变成73,却触发了表单的mousedown事件。
鼠标画圈的时候已经出错了,在空白处点击鼠标左键,text里面的73变成了1

点击第一个、最后一个只是“放大”这个bug,其实是:list超过1页,点击不是当前页的list项目时,出错。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员

发帖
173
浏览券
501
威望
0
贡献值
0
下载币
205
只看该作者 沙发  发表于: 2018-12-24
從來沒有用過combo的路過, 自己寫個grid代替combo會方便很多!

发帖
1931
浏览券
2108
威望
53
贡献值
0
下载币
108
只看该作者 板凳  发表于: 2018-12-24
我也从来不用 combo
著名心理学家詹姆斯指出,世界无非是由两类人组成,一是心志薄弱的人,一是意志坚强的人。当人们遇到挫折和批评时,或逃避,或迎头而山,或伤心不已,或过眼云烟,所有一切无非是人们所具有的不同精神特质,并由此最终带来截然不同的命运。

发帖
1021
浏览券
300006
威望
22
贡献值
100
下载币
103190
只看该作者 地板  发表于: 2018-12-24
Win10 下面操作,没有发现你描述的问题。

使用Combobox时需要特别关注下面的属性:

BoundColumn
ColumnCount
ColumnLines
ColumnWidths
DisplayCount
DisplayValue
DisabledItemForeColor
Picture
Style
Value





建议:

1. 用DisplayCount增加下拉显示行数;
2. 用DisabledItemForeColor做下拉框标题;
3. 用ColumnLines把纵线消失得无影无踪;
4. 用Style防呆禁止用户修改下拉框选项;
5. 用横线分组显示下拉框内容显得爽心悦目。

废话:如此设计下拉框,用户还唧唧歪歪,那就只能安排饭局了。





本主题包含附件,请 登录 后查看, 或者 注册 成为会员

发帖
1021
浏览券
300006
威望
22
贡献值
100
下载币
103190
只看该作者 4楼 发表于: 2018-12-24
把Combobox看成是折叠简化Grid,又会如何呢,当然没Grid那么多属性可操控。

发帖
2335
浏览券
92115
威望
0
贡献值
0
下载币
135
只看该作者 5楼 发表于: 2018-12-25
回 VFRafe 的帖子
VFRafe:Win10 下面操作,没有发现你描述的问题。
使用Combobox时需要特别关注下面的属性:
BoundColumn
....... (2018-12-24 20:14)

谢谢!
4. 用Style防呆禁止用户修改下拉框选项;——combo的1模式,没有bug。
让输入,就是要把这个控件改造成带检索、过滤功能。
如果几千条记录,用户选择不方便。

发帖
2335
浏览券
92115
威望
0
贡献值
0
下载币
135
只看该作者 6楼 发表于: 2018-12-25
回 VFRafe 的帖子
VFRafe:Win10 下面操作,没有发现你描述的问题。
使用Combobox时需要特别关注下面的属性:
BoundColumn
....... (2018-12-24 20:14) 

combo的bug在:Style = 0 下拉组合框

1、在表单上放上VFP自带的combo控件
2、用生成器自动生成下拉组合框,不写一行代码
3、运行表单测试就能发现这个bug

Style = 0 的bug在:展开部分超过1页以上,点击不是当前页的list项目时,有几率出错。
比如:下拉滚动条点击大概第三页第二行,文本框中没有变化(因为没有执行任何事件,包括click、mousedown)。

如果此时,用鼠标点击表单空白处,继续执行了combo的click事件,此时文本会变成刚刚选择点击的点击第三页第二行内容。

如果不在表单空白处点击鼠标,点击该combo控件,按回车、tab键等,文本框始终不会变成刚刚选择并点击的内容。

发帖
1021
浏览券
300006
威望
22
贡献值
100
下载币
103190
只看该作者 7楼 发表于: 2018-12-25
回 kangss 的帖子
kangss:combo的bug在:Style = 0 下拉组合框
1、在表单上放上VFP自带的combo控件
2、用生成器自动生成下拉组合框,不写一行代码
....... (2018-12-25 12:29) 

下拉框里的项目超过100建议不用此控件,当然很明显能用到字母检索也无妨。你看我的币别就是先按常用再按英文字母分组检索。

发帖
2335
浏览券
92115
威望
0
贡献值
0
下载币
135
只看该作者 8楼 发表于: 2018-12-25
回 VFRafe 的帖子
VFRafe:下拉框里的项目超过100建议不用此控件,当然很明显能用到字母检索也无妨。你看我的币别就是先按常用再按英文字母分组检索。 (2018-12-25 12:42) 

谢谢!
事例中,只有73行。也就是说:记录大于1页以上都有几率出错,越多几率越高。

我用combo + list组件重新制作了一个类。当combo需要展开的时候,用VFP的list替代它可以解决。
但是,容器的 Anchor 不好处理。目前正在测试:把 list 放到无边框表单中。

发帖
1021
浏览券
300006
威望
22
贡献值
100
下载币
103190
只看该作者 9楼 发表于: 2018-12-25
回 kangss 的帖子
kangss:谢谢!
事例中,只有73行。也就是说:记录大于1页以上都有几率出错,越多几率越高。
我用combo + list组件重新制作了一个类。当combo需要展开的时候,用VFP的list替代它可以解决。
....... (2018-12-25 13:09) 

试试用
1) Textbox
2) ListBox
组合

一般唯读且不超过100项我喜欢用Combobox,其他用Textbox+ListBox搭配。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个