请教combo显示问题
VFP6.0
一个combo控件,RowSource绑定到本地表的一个字段上,RowSourceType=6。
按下某个按钮后,我程序设定combo.value= '123 '并且combo.displayvalue= '123 '
为什么这个combo显示的还是空白?
[解决办法]
thisform.combo1.RowSource=null
thisform.combo1.RowSourceType= 1
thisform.combo1.RowSource= '123 '
[解决办法]
我只知道,RowSourceType=6时,combo.displayvalue=某个字段名,它就会显示相应字段里的内容。
如果你要让combo.displayvalue= '123 ',应该把thisform.combo1.RowSourceType= 1
ROWSOURCETYPE 属性请参阅
rowsource 属性
适用于: ComboBox | ListBox[该主题是 beta 版的一部分并将在今后的版本中修改. 空的主题包含了一个占位符.]
发送该主题的返馈到微软
指定控件中值的来源类型。设计和运行时可用。
Control.RowSourceType[ = nSource]
属性值
nSource
ROWSOURCETYPE 属性的设置有: 设置说明
0(默认值)无。如果使用了默认值,则在运行时使用 AddItem 或 AddListItem 方法填充列。
1值。使用由逗号分隔的列填充。
2别名。使用 ColumnCount 属性在表中选择字段。
3SQL 语句。SQL SELECT 命令创建一个临时表或一个表。
4查询( .QPR)。指定有 .QPR 扩展名的文件名。
5数组。设置列属性可以显示多维数组的多个列
6字段。用逗号分隔的字段列表。字段前可以加上由表别名和句点组成的前缀。
7文件。用当前目录填充列。这时 RowSource 属性中指定的是文件梗概(诸如 *.DBF 或*.TXT) 或掩码。
8结构。由 RowSource 指定的表的字段填充列。
注意,当 RowSourceType 设置为 8 时,如果 RowSource 属性为空,则将当前选中的表用作组合框或列表框控件的源。否则,RowSource 属性指定了用作组合框或列表框控件的源表的别名。
9弹出式菜单。包含此设置是为了提供向后兼容性。
有关使用每个 RowSourceType 设置的详细内容,请参阅 应用列表框和下拉列表框。
示例
下面的示例创建了一个列表框。列表框的项源是数组,数组的名称由 rowsource 属性指定。ROWSOURCETYPE 属性的设置是 5 (数组)。它指定列表框的项源是数组。
列表框的 multiselect 属性设置为“真”(.t.),即允许从列表框中做多项选择。使用 listcount、selected 和 list 属性将列表框中所做的选择显示出来,从而可以确定列表框中项的数目和选择的项。
CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10 && 用字母填充数组
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
NEXT
frmMyForm = CREATEOBJECT( 'Form ') && 创建一个表单
frmMyForm.Closable = .f. && 禁止控件菜单
frmMyForm.Move(150,10) && 移动表单
frmMyForm.AddObject( 'cmbCommand1 ', 'cmdMyCmdBtn ') && 添加 "Quit " 命令按钮
frmMyForm.AddObject( 'lstListBox1 ', 'lstMyListBox ') && 添加 ListBox 控件
frmMyForm.lstListBox1.RowSourceType = 5 && 指定一个数组
frmMyForm.lstListBox1.RowSource = 'gaMyListArray ' && 数组包含 listbox 项
frmMyForm.cmbCommand1.Visible =.T. && "Quit " 命令按钮可视
frmMyForm.lstListBox1.Visible =.T. && 列表框可见
frmMyForm.SHOW && 显示表单
READ EVENTS && 启动事件处理
DEFINE CLASS cmdMyCmdBtn AS CommandButton && 创建命令按钮
Caption = '\ <Quit ' && 命令按钮标题
Cancel= .T. && 默认取消命令按钮
Left = 125 && 命令按钮列
Top = 210 && 命令按钮行
Height = 25 && 命令按钮高
PROCEDURE Click
CLEAR EVENTS && 停止事件处理, 关闭表单
CLEAR && 清除 Visual FoxPro 主窗口
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox && 创建 ListBox 控件
Left = 10 && 列表框列
Top = 10 && 列表框行
MultiSelect = .T. && 允许选择多个项
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "选定的项: "
? "--------------- "
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt) && 项是选定的吗?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && 显示项
ENDIF
ENDFOR
ENDDEFINE