标题:被 .combo.displayvalue 搞死了,一天都排查不到问题所在
只看楼主
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
结帖率:84.62%
已结贴  问题点数:20 回复次数:11 
被 .combo.displayvalue 搞死了,一天都排查不到问题所在
电脑xp系统,下拉菜单是有“2022111”这个项的,第一段是原代码,我发现下拉菜单不能定位到正确的项后,做了以下两段实验进行比较,按我理解他们应该是完全不一样,我已经不知道怎么排查了,超出我的认知了

第一段:(aaa是个变量,根据需要改变)
aaa=2022111
bbb=Allt(Str(aaa))
Thisform.
Thisform.
If Thisform.
    结果=错误
Else
    结果=正确
Endi
&& 最终得到结果“错误”  (下拉菜单就没办法得到正确的项)


第二段:
Thisform.
Thisform.
If Thisform.
    结果=错误
Else
    结果=正确   &&
Endi
&& 最终得到结果“正确” (下拉菜单成功定位2022111)




我是看不懂为何有差别? 已经排查不到原因了,投降了,还有什么办法绕过combo的displavalue属性吗?
搜索更多相关主题的帖子: 结果 combo 菜单 Thisform 下拉 
2022-11-06 03:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
这个属性最好不要用来“写”,只用来“读”
收到的鲜花
  • 琅拿度2022-11-06 15:27 送鲜花  3朵  
2022-11-06 04:50
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用吹水佬在2022-11-6 04:50:06的发言:

这个属性最好不要用来“写”,只用来“读”


关键是以前其它地方用好久也没有这个问题啊,而且我真的不知道上面两段代码从意义上讲有任何区别,真的搞死了

另外:我只知道某一项是某个值,还有什么办法下拉到这个值呢?

[此贴子已经被作者于2022-11-6 11:15编辑过]

2022-11-06 11:13
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:10 
以下是引用琅拿度在2022-11-6 11:13:17的发言:

另外:我只知道某一项是某个值,还有什么办法下拉到这个值呢?


这好办,逐项把它找出来

oo = Thisform.
For ii = 1 to oo.ListCount
    If oo.List[ii] = '2022111'
        oo.ListIndex = ii
        Exit
    EndIf
EndFor


[此贴子已经被作者于2022-11-6 11:37编辑过]

收到的鲜花
  • 琅拿度2022-11-06 15:27 送鲜花  5朵  
2022-11-06 11:31
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
2段代码效果应该是一样的啊。
2022-11-06 12:00
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用csyx在2022-11-6 11:31:49的发言:



这好办,逐项把它找出来

oo = Thisform.
For ii = 1 to oo.ListCount
    If oo.List = '2022111'
        oo.ListIndex = ii
        Exit
    EndIf
EndFor

If oo.List = '2022111' 应该是If oo.List(ii) = '2022111' 吧

我刚刚也想逐一显示displayvalue的方式排查,但缺点是combo的显示要变,你这个方法好,不用改变displayvalue

2022-11-06 12:08
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用sam_jiang在2022-11-6 12:00:31的发言:

2段代码效果应该是一样的啊。


是的,知识理解上完全一样,但现实就是出问题了,还是用前面楼上的方法解决更稳妥,已经遇到过好几次这种莫名其妙的问题了,怀疑人生
2022-11-06 12:09
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用琅拿度在2022-11-6 12:09:56的发言:
怀疑人生


DisplayValue 属性
===============
指定 ListBox 或 ComboBox 控件中选定项的第一列的内容。设计和运行时可用。

当某个组合框或列表框多于一列,且控件的 BoundColumn 属性设置为大于 1 的值时,使用 DisplayValue 属性。
 
[Form.]Control.DisplayValue[ = Expr]

属性值
Expr
指定字符串或数值。下表列出了 Expr 的值。 Expr 说明
字符串
 指定选定项的第一列的值。

对于组合框,当 DisplayValue 属性是字符串时,DisplayValue 属性指定了组合框的文本框部分中显示的文本。但是,ComboBox 对象的 InputMask 和 MaxLength 属性会影响它的显示。
 
数值
 指定选定项的索引。

说明
应用于:ComboBox 控件 | ListBox 控件

当组合框或列表框中仅有一列时,如果控件的 DisplayValue 属性和 Value 属性都包含字符串,则二者的值通常都相同。但是有一种例外情况:两个属性的内容都是字符串,然后在组合框中输入一个值,但该值不存在于列表中。在此情况下,Value 属性是空字符串(""),而 DisplayValue 属性是所输入的值。
===============

VFP帮助文件详细介绍了DisplayValue属性值的使用方法。
唉,是时候由我老人家给楼主谈谈人生啦——特别是一眼看到楼主“怀疑人生”,不由勾起了我老人家悲天悯人的慈祥而温柔的心绪。
这故事告诉我们:

切莫轻易怀疑人生。人生当中,无论搞任何事情,一定要细心、细心再细心!

DisplayValue = 字符串,此时指定选定项的第一列的值。
DisplayValue = 数值,此时指定选定项的索引。

——楼上的,安德丝店?

若要指定数值型DisplayValue,应该是1、2、3、4……而非2022111!

——楼上的,安德丝店?
2022-11-06 13:16
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
以下是引用cssnet在2022-11-6 13:16:24的发言:
若要指定数值型DisplayValue,应该是1、2、3、4……而非2022111!

——楼上的,安德丝店?

人家是 '2022111' 而非 2022111,安德丝旦
2022-11-06 13:38
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用cssnet在2022-11-6 13:16:24的发言:



DisplayValue 属性
===============
指定 ListBox 或 ComboBox 控件中选定项的第一列的内容。设计和运行时可用。

当某个组合框或列表框多于一列,且控件的 BoundColumn 属性设置为大于 1 的值时,使用 DisplayValue 属性。
 
[Form.]Control.DisplayValue[ = Expr]

属性值
Expr
指定字符串或数值。下表列出了 Expr 的值。 Expr 说明
字符串
 指定选定项的第一列的值。

对于组合框,当 DisplayValue 属性是字符串时,DisplayValue 属性指定了组合框的文本框部分中显示的文本。但是,ComboBox 对象的 InputMask 和 MaxLength 属性会影响它的显示。
 
数值
 指定选定项的索引。

说明
应用于:ComboBox 控件 | ListBox 控件

当组合框或列表框中仅有一列时,如果控件的 DisplayValue 属性和 Value 属性都包含字符串,则二者的值通常都相同。但是有一种例外情况:两个属性的内容都是字符串,然后在组合框中输入一个值,但该值不存在于列表中。在此情况下,Value 属性是空字符串(""),而 DisplayValue 属性是所输入的值。
===============

VFP帮助文件详细介绍了DisplayValue属性值的使用方法。
唉,是时候由我老人家给楼主谈谈人生啦——特别是一眼看到楼主“怀疑人生”,不由勾起了我老人家悲天悯人的慈祥而温柔的心绪。
这故事告诉我们:

切莫轻易怀疑人生。人生当中,无论搞任何事情,一定要细心、细心再细心!

DisplayValue = 字符串,此时指定选定项的第一列的值。
DisplayValue = 数值,此时指定选定项的索引。

——楼上的,安德丝店?

若要指定数值型DisplayValue,应该是1、2、3、4……而非2022111!

——楼上的,安德丝店?


但是有一种例外情况:两个属性的内容都是字符串,然后在组合框中输入一个值,但该值不存在于列表中。在此情况下,Value 属性是空字符串(""),而 DisplayValue 属性是所输入的值。

这句话说明“不存在”时,DisplayValue 属性才是数值。但问题是我输入后,这个项不但存在,而且我要的是indexlist的值,所以你能解释一下吗? 并且我两段代码写的很清楚了,都是字符型的,但得到了不同的结果,你认为是什么原因呢?
2022-11-06 15:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510561-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051561 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved