设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2797|回复: 4
打印 上一主题 下一主题

[窗体] 关于列表框的使用(一)

[复制链接]
跳转到指定楼层
1#
发表于 2011-1-22 15:39:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 roych 于 2011-1-22 15:39 编辑

       针对目前大部分新手队列表框不够熟悉的情况,现在详细介绍下列表框的一些常用属性、方法。
       1、关于列表框。
       如何判断列表框控件?
       代码:当然方法很多,我这里只介绍用控件类型的方法,列表框的控件类型为110(看来列表框是蛮重要的,事关警情啊)代码为:Me.Controls.Item(i).ControlType=110;这里的i为变量。我曾在一篇回帖里用过这个属性来清空数据源。另外也可以用acListBox来判断:不过不能按上面那样直接引用,而是要先定义一个Control,然后再进行判断,如下所示:
  1. Dim Ctrl As Control    '定义控件
  2. For Each Ctrl In Me.Form.Controls   '历遍当前窗体控件
  3. If Ctrl.ControlType = acListBox Then '判断是否有列表框
  4. MsgBox Ctrl.Name   '弹出列表框名称
  5. End If
  6. 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、如何判断列表中的值被选中?
     在列表框中,是否选中其实是分两种情况的。第一种是,打开窗体后,默认情况是没有选中的;第二种情况是,当你选中后,忽然不想选这个了,再单击一次,则成了反选,那也是没有选中,对吧?因此判断时要用两个条件来判断:
  1. If Me.List0.ListIndex = -1 Or Me.List0.Selected(Me.List0.ListIndex) = False Then
  2. MsgBox "未选择"
  3. End If
复制代码
Me.List0.ListIndex = -1为第一种情况,如果没有后面那句,那么反选后其实还是可以执行的。如果仅仅用后面那一句会怎么样?当你限制单选时可能看不出问题的所在,不过一旦支持复选(多选)时就知道差别在哪里了。例如,选了四五个之后,打算反选一个(即取消选择),那么电脑根据反选的动作,判断:您没有选择。(待续)

本帖被以下淘专辑推荐:

  • · 控件|主题: 8, 订阅: 0
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
 楼主| 发表于 2011-1-22 16:10:21 | 只看该作者
       (续上)
       继续解释下上面的属性:
       ListIndex:列表值的位置关系,这个跟VB中的数组类似,是从0开始到最后一个结束。例如列表值有10个,那么就是0~9。那么当它为-1时,自然是没有选中的了。
       Selected:选择。一般需要参数,用以判断哪一项被选中。例如me.list0.select(1)=true,表示第二项被选中。
       c、如何显示已选中的值?
      请用ItemData属性,同样,这也是一个带参数的属性,例如:MsgBox Me.List0.ItemData(0)弹出第一项的值。
      d、如何选中其它列?
      默认情况下,是绑定第一列的。例如可能你希望选中这一行之后,把数据的某一列值更新到某个表,那么就要用column属性来访问其中的某一列了。如下所示:当选中后将弹出第三列的值。
  1. For i = 0 To Me.List0.ListCount - 1
  2. If Me.List0.Selected(i) = True Then
  3. MsgBox Me.List0.Column(2)
  4. End If
  5. Next i
复制代码
     e、其它属性将在后面陆续补上。
3#
发表于 2011-1-22 22:23:10 | 只看该作者
谢谢。。。

点击这里给我发消息

4#
发表于 2015-2-1 10:12:55 | 只看该作者
版主加油
回复

使用道具 举报

5#
发表于 2019-4-3 12:02:20 | 只看该作者
学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-11 03:47 , Processed in 0.106337 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表