注册 登录
编程论坛 VFP论坛

Combo控件的Style设置为2-Dropdown List时,如何给combo赋值

皇火 发布于 2022-10-23 11:27, 1344 次点击
如题,combo控件的RowSource的值是"AAA,BBB,CCC",RowSourceType是1-Value,我在Init里用this.displayValue="BBB"给combo控件赋值时,执行时显示总是为空白,用this.Value=2,能定位到BBB,但需要点击Combo后才显示。
用0-Dropdown Combo状态,虽然可以赋值,但我不喜欢这个状态下Combo的值可以修改。
请教老师,在2-Dropdown List状态下,如何在Init中设置初始值。
6 回复
#2
csyx2022-10-23 17:11
vfp组合框的初值设置有时候确实很诡异,像你这种情况,比较通用的方法是在 init 中写 This.ListIndex = 2,可以避免要判断 Value 的数据类型
相当于
if vartype(this.value) = 'C'
    this.value = 'bbb'
else
    this.value = 2
endif


[此贴子已经被作者于2022-10-23 17:53编辑过]

#3
皇火2022-10-25 07:57
谢谢指点,还是很诡异,可以设置初始值,但在表单中再次赋值还是变成空开。
#4
csyx2022-10-25 09:37
以下是引用皇火在2022-10-25 07:57:41的发言:

还是很诡异,可以设置初始值,但在表单中再次赋值还是变成空开。

建议你通过 ContolSource 将组合框绑定到一数据源(变量或字段),这样组合框的使用会比较简单且符合思维习惯
#5
吹水佬2022-10-25 14:49
没有绑定DBF时用好Index或ItemID就可以
绑定DBF时控制好DBF的记录定位再Requery刷新一下就可以
#6
liuxingang282022-10-26 10:07
我测试了一下,并没有遇到楼主出现的问题。在 Style 为“2-Dropdown List”时,不要使用 DisplayValue 设置初始值。在 Init 事件中,使用 THIS.Value = 'BBB' 或 THIS.VALUE = 2 均可以设置初始值,并没有碰到任何问题。
程序代码:
oFrm = NEWOBJECT('myform')
oFrm.Show(1)

DEFINE CLASS myform as Form
    ADD OBJECT comb1 as mycomb
ENDDEFINE

DEFINE CLASS mycomb as ComboBox
    RowSource = 'AAA,BBB,CCC'
    RowSourceType = 1
    Style = 2
    Left = 10
    Top = 10
    PROCEDURE Init
        THIS.Value = 'BBB'
*        THIS.Value [color=#808080]= 2[/color]
ENDDEFINE

只有本站会员才能查看附件,请 登录
#7
皇火2022-10-27 07:18
谢谢各位老师的指点,现在设置初始值的问题已经解决,放在Init中,如下:
this.RowSource='AAA,BBB,CCC'
this.RowSourceType= 1
this.displaycount=10
this.selectOnEntry=.T.
this.style=2
this.DisplayValue='BBB'  && 也可以是 this.Value=2
之前,this.RowSource='AAA,BBB,CCC'和this.RowSourceType= 1和this.displaycount=10这三句是放在When中的,行不通,感觉When与其它有执行次序的冲突。
目前,视乎在运行中,再对combo进行赋值,还是不顺,我先研究一下再通报。
1