注册 登录
编程论坛 VFP论坛

VFP9 combox 的BUG,CCB2000在VFP10中已修复。谁有简单的绕过这个BUG的方法?

kangss 发布于 前天 17:35, 246 次点击
CCB2000在VFP10中剖析修复:https://

复现BUG例子:
只有本站会员才能查看附件,请 登录


BUG演示:
只有本站会员才能查看附件,请 登录


这个例子是简单的把dbf挂接到combox上

测试过程:点击小三角展开
滚动条拉到底,选择点击最后一个
滚动条拉到头,再选择点击第一个
反反复复,多试几次,有时候第一次第二次就会出现BUG

当点击list项目后,combox的值没有发生改变,BUG就呈现出来了,此时点击窗口,combox的值又更新了。
看看谁有简单有效绕过这个BUG的方法?
16 回复
#2
kangss前天 18:29
4. APPLIES TO:

     VFP 9.0.0.3504 (SP1)
     VFP 9.0.0.4611 (SP2)
     VFP 9.0.0.5015 (SP2)
     VFP 9.0.0.5411 (SP2)
     VFP 9.0.0.5721 (SP2)
     VFP 9.0.0.5815 (SP2)
     VFP 9.0.0.6303 (SP2)
     VFP 9.0.0.6602 (SP2)
     VFP 9.0.0.7423 (SP2)

     The bug has been fixed in VFP Advanced.

刚刚找了9.0 - 2412版测试,没有这个BUG
#3
schtg昨天 06:50
回复 楼主 kangss
我刚测试了11次,都没有问题的哈,我的操作系统win10 64位。
#4
kangss昨天 10:00
以下是引用schtg在2025-4-4 06:50:19的发言:

我刚测试了11次,都没有问题的哈,我的操作系统win10 64位。

9.0 - 2412:正常,之后的升级版包括 7423,都有这个BUG。你的VFP是哪个版本的?
#5
schtg昨天 11:05
回复 4楼 kangss
我安装的是专业版2412,然后直接拷贝的7423的文件覆盖了2412的哈
#6
kangss昨天 11:28
以下是引用schtg在2025-4-4 11:05:19的发言:

我安装的是专业版2412,然后直接拷贝的7423的文件覆盖了2412的哈

跟windows无关,只要不是2412,就有BUG。我用的就是7423,仔细看一下9.0的关于,你用的是不是7423
#7
schtg昨天 16:47
回复 6楼 kangss
就是7423哈
只有本站会员才能查看附件,请 登录
#8
csyx昨天 17:18
此bug肯定是存在的,不然ccb也找不到要修复的位置,且我和单位的其他人也多次碰到过选不上的情况

另:下拉列出项数较少时不大容易碰到选不上的情况,项数越多越容易碰上,把 Combo1.DisplayCount 设为 15 试试

#9
kangss昨天 17:46
只有本站会员才能查看附件,请 登录

设置 20、奇数、偶数都没用
2412 的 PictureVal 不支持 png,7423 修正之前版本很多BUG
#10
kangss昨天 17:49
以下是引用schtg在2025-4-4 16:47:13的发言:

就是7423哈

同样的 exe,运行有这个BUG,用 2412 版本的 vfp9r.dll、vfp9rchs.dll 替换掉,再运行就没有这个BUG
#11
csyx昨天 18:15
以下是引用kangss在2025-4-4 17:46:30的发言:
设置 20、奇数、偶数都没用

理解错误,schtg 不是复现不了这 bug 嘛,把 DisplayCount 设置成大点的数。项数越多越容易出现选不上的情况,不是设成 15 就没这 bug 了

[此贴子已经被作者于2025-4-4 18:19编辑过]

#12
kangss昨天 18:52
以下是引用csyx在2025-4-4 18:15:50的发言:
理解错误,schtg 不是复现不了这 bug 嘛,把 DisplayCount 设置成大点的数。项数越多越容易出现选不上的情况,不是设成 15 就没这 bug 了

list项目少,也会有这个BUG,包括下拉组合、下拉列表这 2 种模式。有绕过这个BUG的方法吗?
#13
kangss昨晚 19:04
展开 list 时,这个list是在一个带有句柄的窗口中,我在计时器中获取不到它的句柄,如果能获取到这个类“vfp994000002”的句柄,用消息激活它置顶,大概率能绕过这个BUG。
这个类的名称目前发现规律是“vfp + 9940 + 00002”:exe名 + 不同的exe中间4位不一样 + 4个0 + “2”
这个类的名称 = 所在窗口的类名称 + “2”

[此贴子已经被作者于2025-4-4 19:09编辑过]

#14
csyx昨晚 19:08
以下是引用kangss在2025-4-4 18:52:37的发言:
有绕过这个BUG的方法吗?

项数少到不出现滚动条就没问题。
我的方案是,基类中 DispalyCount 设置为 15,凡项数大于 15 的都用两或三级的弹出菜单替代(DropDown 里 NoDefault,然后在 Combobox 下弹出这个菜单)
#15
kangss昨晚 19:11
以下是引用csyx在2025-4-4 19:08:52的发言:


项数少到不出现滚动条就没问题。
我的方案是,基类中 DispalyCount 设置为 15,凡项数大于 15 的都用两或三级的弹出菜单替代(DropDown 里 NoDefault,然后在 Combobox 下弹出这个菜单)

你这个方法也是不错的,我在有输入需求自动展开list的combox中用 combox + list,2个控件组合成一个类库使用,可以绕过去。
现在是想看看单独使用combox时有没有办法绕过去。

[此贴子已经被作者于2025-4-4 19:13编辑过]

#16
csyx昨晚 19:23
实例截图是这样
只有本站会员才能查看附件,请 登录


我不想用 list,因为 list 的位置受限于当前表单位置和尺寸,除非表单最大化,上面截图中菜单高度就超出表单下边界
#17
kangss昨晚 19:42
以下是引用csyx在2025-4-4 19:23:54的发言:

实例截图是这样


我不想用 list,因为 list 的位置受限于当前表单位置和尺寸,除非表单最大化,上面截图中菜单高度就超出表单下边界

漂亮!
1