| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1363 人关注过本帖, 4 人收藏
标题:VFP9 combox 的BUG,CCB2000在VFP10中已修复。谁有简单的绕过这个BUG的方法 ...
取消只看楼主 加入收藏
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用easyppt在2025-4-5 15:18:53的发言:

很好奇,CCB能在VFP10中修复,为何 VFP9-7423 就无法修复 ??

他的 VFP Advanced 是独立的
2025-04-05 19:17
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用丁春秋yxp在2025-4-5 23:50:51的发言:

这个bug确实存在

还是不能图省事,再用combo+listbox做一个下拉列表模式的
2025-04-06 20:03
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用星光悠蓝在2025-4-6 22:26:44的发言:

我用的是7423,WIN7系统,组合框有100多项目,没看到有选择错误现象!


0-下拉组合框
2-下拉列表框
2种模式都有这个BUG

特别是 _screen.Visible = .F.,或编译成exe时,配置文件中 SCREEN = OFF,概率极高。
没有隐藏 _screen 时,“2-下拉列表框”方式问题不大。

2025-04-07 19:36
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用cssnet在2025-4-8 00:14:09的发言:
直觉你自己说的第一句话,可能就是问题的关键。
为什么不试试:
“不要简单的把dbf挂接到combox上,而是改用Scan...endscan将dbf数据手动填充到combox上呢?”
虽然这作法有点儿“脱裤子放屁”,不过,说不定就能解决此bug,亦未可知?
呵呵。

你说的这种,试过了,无效。N年前突然发现这个现象,以为自己用的方式不对,反反复复调整了很久,发现不是自己用的不对,最后报给CCB2000确认的。
简单挂上,是为了更直观的复现BUG。
采用“2-下拉列表框”模式,_screen不隐藏使用,也就是在VFP环境中使用,没啥问题。编译成exe,不想看见_screen,就隐藏了它,问题就尤为明显。

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

2025-04-08 11:16
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
CCB2000的分析原因解决方案估计大部分人都看不懂,如果能看懂,做个补丁啥的,也许能解决
2025-04-08 11:21
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用cssnet在2025-4-8 15:06:45的发言:





为避免我老人家打赌输了会“很没面子”,这样子吧,折中一下,我删掉当中带私人标志的“独门秘笈”,只发一个解决方案的残缺版“半成品”上来;至于如何将它完善一下,弄得流畅妥帖,那就是你们年轻气盛的小伙儿们的事啦——

Good luck!


刚刚测试这种方案:再放上一个下拉列表框的combo2,数据源用“值”,如果不在thisform.pait里面增加 thisform.combo2.value = thisform.combo2.value 的话,点击 combo2 展开的list选项时,值不会变。
增加 thisform.refresh,可以解决
但是 thisform.pait 里面增加哪一行代码,当前 VFP9 的CPU占用直接上升到 20% 以上,不会停止。在这里写代码,需要特别注意。
2025-04-08 17:42
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2025-4-8 16:13:26的发言:

这是我前面说的模拟点击方案。我测试了几次好像没问题,尚待多方测试才知是否真能解决问题

这个方案,初测可以,我再详细测试测试,之前做个的给窗口发送鼠标点击消息必须是顶层表单才会有效放弃了。
不知道编译成exe后效果如何。
2025-04-08 17:51
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2025-4-8 18:02:55的发言:

鼠标点击有一个副作用,就是list展开时,它下边有其它控件时,鼠标会点击下边的控件

CloseUp 确实不错,不理想的地方是,列表模式下第二次点击编辑框,或第二次点击小三角combo不会折叠

改成:
DECLARE LONG SendMessage IN WIN32API LONG,LONG,LONG,LONG
SendMessage(THISFORM.HWND, 0x0201, 0, 0)
SendMessage(THISFORM.HWND, 0x0202, 0, 0)
向窗口发送点击消息,效果也不理想,同样会出现不灵现象

2025-04-08 19:00
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
以下是引用ccb2000在2025-4-9 09:31:32的发言:

可以运行以下代码修复VFP 9.0.0.7423 (SP2)中的这个bug:

SET TALK OFF

x1=FILETOSTR("vfp9.exe")
IF SUBS(x1,0x4c7570+1,5)=CHR(0xba)+CHR(0x01)+CHR(0x00)+CHR(0x00)+CHR(0x00)
   x1=STUFF(x1,0x4c7570+1,5,CHR(0xe9)+CHR(0x6f)+CHR(0x00)+CHR(0x00)+CHR(0x00))
   =STRTOFILE(x1,"vfp9.exe")
ENDI

x1=FILETOSTR("vfp9r.dll")
IF SUBS(x1,0x3bdf3e+1,5)=CHR(0xba)+CHR(0x01)+CHR(0x00)+CHR(0x00)+CHR(0x00)
   x1=STUFF(x1,0x3bdf3e+1,5,CHR(0xe9)+CHR(0x6f)+CHR(0x00)+CHR(0x00)+CHR(0x00))
   =STRTOFILE(x1,"vfp9r.dll")
ENDI

x1=FILETOSTR("vfp9t.dll")
IF SUBS(x1,0x2f2e43+1,5)=CHR(0xba)+CHR(0x01)+CHR(0x00)+CHR(0x00)+CHR(0x00)
   x1=STUFF(x1,0x2f2e43+1,5,CHR(0xe9)+CHR(0x6f)+CHR(0x00)+CHR(0x00)+CHR(0x00))
   =STRTOFILE(x1,"vfp9t.dll")
ENDI

也可以下载VFP Advanced 2022免费版。
2025-04-09 10:04
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:321
专家分:732
注 册:2014-6-12
收藏
得分:0 
感谢CCB2000提供造福vfper的修复办法。这里提醒一下vfper:还得在 combo 的 InteractiveChange 中增加少量代码才能彻底解决 Style = 2 时的BUG:
https://baiyujia.com/vfpdocuments/f_vfp9fix60.asp

For the Drop-down list box (ComboBox.Style=2),
recommend to add the following code to the ComboBox.InteractiveChange() event to refresh the selected item:
IF THIS.STYLE=2
    THIS.VALUE=THIS.VALUE
    THIS.REFRESH
ENDIF

2025-04-09 11:50
快速回复:VFP9 combox 的BUG,CCB2000在VFP10中已修复。谁有简单的绕过这个BUG的 ...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064990 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved