Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 4171|回復(fù): 1
打印 上一主題 下一主題

Access能排序的列表框-Access經(jīng)典源碼剖析21講

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2015-1-28 13:42:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
上一個(gè)單元我們花了4節(jié)課的時(shí)間來(lái)講解《Access多層架構(gòu)開(kāi)發(fā)思路》,大家對(duì)這個(gè)開(kāi)發(fā)中大型管理系統(tǒng)都有了一定的了解和認(rèn)識(shí),知道怎么去處理access數(shù)據(jù)庫(kù)多層架構(gòu)的問(wèn)題
今天Access經(jīng)典源碼剖析內(nèi)容為 能排序的列表框的實(shí)現(xiàn)。內(nèi)容重要,請(qǐng)勿錯(cuò)過(guò)!
列表框像子窗體一樣,可以按要求進(jìn)行排序能排序的列表框的技術(shù)特征:
1、能對(duì)列表框進(jìn)行排序
2、單擊一次順排,再單擊一次倒排
3、能夠顯示排序的順三角符號(hào)和倒三角符號(hào)
4、通用的XP式風(fēng)格通用模塊,只需設(shè)置一個(gè)參數(shù)就可實(shí)現(xiàn)
5、國(guó)際標(biāo)準(zhǔn)的LNC對(duì)象命名規(guī)則,標(biāo)準(zhǔn)的程序注釋風(fēng)格
6、通用的關(guān)于窗體
7、真正透明圖片的實(shí)現(xiàn)
8、清爽程序界面的一些思想(參考了黃海的程序)
9、透明按鈕的使用

報(bào)名及詳細(xì)信息:http://ctxi.cn/thread-118946-1-1.html





部分代碼預(yù)覽


  1. '===============================================================================
  2. '-函數(shù)名稱(chēng):         SetListOrder
  3. '-功能描述:         按指定的列對(duì)列表框數(shù)據(jù)進(jìn)行排序
  4. '-輸入?yún)?shù):         參數(shù)1:rintColumn Integer 要排序的列
  5. '-                  參數(shù)2:rlst ListBox 要排序的列表框
  6. '-返回參數(shù):         無(wú)
  7. '-使用示例:         SetListOrder 1, lstObjDesc
  8. '-相關(guān)調(diào)用:
  9. '-使用注意:         調(diào)用前設(shè)置好列表框的列和寬度以及行來(lái)源,且行來(lái)源要指定具體的字段
  10. '-兼 容 性:         97,2000,XP compatible
  11. '-參考資料:
  12. '-作    者:         王宇虹  修改:王宇虹
  13. '-創(chuàng)建日期;         2002-08-26  更新日期: 2002-10-28 ,2002-11-15
  14. '-圖    解:
  15. '===============================================================================


  16. Private Function SetListOrder(rintColumn As Integer, rlst As ListBox)
  17. Dim strCaption As String        '存儲(chǔ)標(biāo)題
  18. Dim ctrColumnLabel As Control   '自制列標(biāo)題
  19. Dim i As Integer
  20. Dim iPos As Integer             '字符串查找的定位位置
  21. Dim iPos2 As Integer
  22. Dim intColumnCount As Integer   '列表框的列數(shù)
  23. Dim strRowSource As String      '列表框的行來(lái)源
  24. Dim strFldName As String        '字段名
  25. Dim strFldNames As Variant      '字段名數(shù)組
  26. Dim strHeader As String         '列表框本身的列標(biāo)題內(nèi)容
  27. intColumnCount = rlst.ColumnCount   '取列表框的列數(shù)

  28. strRowSource = lstObjDesc.RowSource '取列表框的行來(lái)源的SQL語(yǔ)句,去掉"ORDER BY"后面的內(nèi)容
  29. iPos = InStr(strRowSource, "Order By")
  30. If iPos > 0 Then strRowSource = Mid(strRowSource, 1, iPos - 1)
  31. iPos = InStr(strRowSource, "select")    '取列表框行來(lái)源的SQL語(yǔ)句中"select"與"from"中間的字段串
  32. If iPos > 0 Then iPos = iPos + 7
  33. iPos2 = InStr(strRowSource, "from")
  34. strFldName = Mid(strRowSource, iPos, iPos2 - iPos)
  35. strFldNames = Split(strFldName, ",")    '根據(jù)","拆分各個(gè)字段名稱(chēng)出來(lái)




  36. Set ctrColumnLabel = Me.Controls("lblColumn" & rintColumn)
  37.     Application.Echo False      '暫時(shí)關(guān)閉屏幕刷新,避免對(duì)列表框排序時(shí)造成畫(huà)面抖動(dòng)
  38.     rlst.ColumnHeads = True     '暫時(shí)顯示列表框的列表題,以便取出標(biāo)題給自制列標(biāo)題
  39.     strHeader = rlst.Column(rintColumn, 0)  '取出列表框當(dāng)前列的列標(biāo)題
  40.     strCaption = ctrColumnLabel.Caption     '取出自制列標(biāo)題
  41.     strFldName = strFldNames(rintColumn)    '取出當(dāng)前列所對(duì)應(yīng)的字段名稱(chēng)
  42.     iPos = InStr(strFldName, " as")         '可能用戶(hù)會(huì)使用 fldname as fldname1這種方式,故截取字符
  43.     If iPos > 0 Then strFldName = Mid(strFldName, 1, iPos - 1)
  44.    
  45.     Select Case Right(strCaption, 1)        '判斷當(dāng)前自制列標(biāo)題的標(biāo)題內(nèi)容
  46.    '.......................
復(fù)制代碼


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2015-1-28 18:10:50 | 只看該作者
比較感興趣的是那個(gè)三角符號(hào)是怎么弄出來(lái)的。感覺(jué)有些像ListView……
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 10:32 , Processed in 0.101479 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表