|
上一个单元我们花了4节课的时间来讲解《Access多层架构开发思路》,大家对这个开发中大型管理系统都有了一定的了解和认识,知道怎么去处理access数据库多层架构的问题
今天Access经典源码剖析内容为 能排序的列表框的实现。内容重要,请勿错过!
列表框像子窗体一样,可以按要求进行排序能排序的列表框的技术特征:
1、能对列表框进行排序
2、单击一次顺排,再单击一次倒排
3、能够显示排序的顺三角符号和倒三角符号
4、通用的XP式风格通用模块,只需设置一个参数就可实现
5、国际标准的LNC对象命名规则,标准的程序注释风格
6、通用的关于窗体
7、真正透明图片的实现
8、清爽程序界面的一些思想(参考了黄海的程序)
9、透明按钮的使用
报名及详细信息:http://www.office-cn.net/thread-118946-1-1.html
部分代码预览
- '===============================================================================
- '-函数名称: SetListOrder
- '-功能描述: 按指定的列对列表框数据进行排序
- '-输入参数: 参数1:rintColumn Integer 要排序的列
- '- 参数2:rlst ListBox 要排序的列表框
- '-返回参数: 无
- '-使用示例: SetListOrder 1, lstObjDesc
- '-相关调用:
- '-使用注意: 调用前设置好列表框的列和宽度以及行来源,且行来源要指定具体的字段
- '-兼 容 性: 97,2000,XP compatible
- '-参考资料:
- '-作 者: 王宇虹 修改:王宇虹
- '-创建日期; 2002-08-26 更新日期: 2002-10-28 ,2002-11-15
- '-图 解:
- '===============================================================================
- Private Function SetListOrder(rintColumn As Integer, rlst As ListBox)
- Dim strCaption As String '存储标题
- Dim ctrColumnLabel As Control '自制列标题
- Dim i As Integer
- Dim iPos As Integer '字符串查找的定位位置
- Dim iPos2 As Integer
- Dim intColumnCount As Integer '列表框的列数
- Dim strRowSource As String '列表框的行来源
- Dim strFldName As String '字段名
- Dim strFldNames As Variant '字段名数组
- Dim strHeader As String '列表框本身的列标题内容
- intColumnCount = rlst.ColumnCount '取列表框的列数
- strRowSource = lstObjDesc.RowSource '取列表框的行来源的SQL语句,去掉"ORDER BY"后面的内容
- iPos = InStr(strRowSource, "Order By")
- If iPos > 0 Then strRowSource = Mid(strRowSource, 1, iPos - 1)
- iPos = InStr(strRowSource, "select") '取列表框行来源的SQL语句中"select"与"from"中间的字段串
- If iPos > 0 Then iPos = iPos + 7
- iPos2 = InStr(strRowSource, "from")
- strFldName = Mid(strRowSource, iPos, iPos2 - iPos)
- strFldNames = Split(strFldName, ",") '根据","拆分各个字段名称出来
- Set ctrColumnLabel = Me.Controls("lblColumn" & rintColumn)
- Application.Echo False '暂时关闭屏幕刷新,避免对列表框排序时造成画面抖动
- rlst.ColumnHeads = True '暂时显示列表框的列表题,以便取出标题给自制列标题
- strHeader = rlst.Column(rintColumn, 0) '取出列表框当前列的列标题
- strCaption = ctrColumnLabel.Caption '取出自制列标题
- strFldName = strFldNames(rintColumn) '取出当前列所对应的字段名称
- iPos = InStr(strFldName, " as") '可能用户会使用 fldname as fldname1这种方式,故截取字符
- If iPos > 0 Then strFldName = Mid(strFldName, 1, iPos - 1)
-
- Select Case Right(strCaption, 1) '判断当前自制列标题的标题内容
- '.......................
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|