|
本帖最后由 roych 于 2011-1-22 15:39 编辑
针对目前大部分新手队列表框不够熟悉的情况,现在详细介绍下列表框的一些常用属性、方法。
1、关于列表框。
如何判断列表框控件?
代码:当然方法很多,我这里只介绍用控件类型的方法,列表框的控件类型为110(看来列表框是蛮重要的,事关警情啊)代码为:Me.Controls.Item(i).ControlType=110;这里的i为变量。我曾在一篇回帖里用过这个属性来清空数据源。另外也可以用acListBox来判断:不过不能按上面那样直接引用,而是要先定义一个Control,然后再进行判断,如下所示:- Dim Ctrl As Control '定义控件
- For Each Ctrl In Me.Form.Controls '历遍当前窗体控件
- If Ctrl.ControlType = acListBox Then '判断是否有列表框
- MsgBox Ctrl.Name '弹出列表框名称
- End If
- Next Ctrl
复制代码 2、列表框的常用属性。
a、如何设置列表框的数据源?
一般来说,我们可以在列表框属性里进行设置。习惯上来讲,我是不喜欢用向导来完成,而是自己用查询来设置数据源的,毕竟向导没有自定义来得更舒服。此外,还可以用代码来设置,那就是rowsource属性了(行来源)。例如,你可以这样写代码:
Me.List0.RowSource = "SELECT teco.[Changed by], T_Order.Order FROM teco LEFT JOIN T_Order ON teco.Order = T_Order.Order WHERE (((T_Order.Order) Is Not Null));"
这里将一个查询语句作为数据的行来源。需要注意的是,写语句时,必要的空格和单双引号的问题要注意,例如在查询语句里常见的 where Name like "*Roy*“等,引用时要改为:tem="where Name like '*Roy*'"
b、如何判断列表中的值被选中?
在列表框中,是否选中其实是分两种情况的。第一种是,打开窗体后,默认情况是没有选中的;第二种情况是,当你选中后,忽然不想选这个了,再单击一次,则成了反选,那也是没有选中,对吧?因此判断时要用两个条件来判断:- If Me.List0.ListIndex = -1 Or Me.List0.Selected(Me.List0.ListIndex) = False Then
- MsgBox "未选择"
- End If
复制代码 Me.List0.ListIndex = -1为第一种情况,如果没有后面那句,那么反选后其实还是可以执行的。如果仅仅用后面那一句会怎么样?当你限制单选时可能看不出问题的所在,不过一旦支持复选(多选)时就知道差别在哪里了。例如,选了四五个之后,打算反选一个(即取消选择),那么电脑根据反选的动作,判断:您没有选择。(待续) |
|