技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 19931
|
上一個(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ù)覽
- '===============================================================================
- '-函數(shù)名稱(chēng): SetListOrder
- '-功能描述: 按指定的列對(duì)列表框數(shù)據(jù)進(jìn)行排序
- '-輸入?yún)?shù): 參數(shù)1:rintColumn Integer 要排序的列
- '- 參數(shù)2:rlst ListBox 要排序的列表框
- '-返回參數(shù): 無(wú)
- '-使用示例: SetListOrder 1, lstObjDesc
- '-相關(guān)調(diào)用:
- '-使用注意: 調(diào)用前設(shè)置好列表框的列和寬度以及行來(lái)源,且行來(lái)源要指定具體的字段
- '-兼 容 性: 97,2000,XP compatible
- '-參考資料:
- '-作 者: 王宇虹 修改:王宇虹
- '-創(chuàng)建日期; 2002-08-26 更新日期: 2002-10-28 ,2002-11-15
- '-圖 解:
- '===============================================================================
- Private Function SetListOrder(rintColumn As Integer, rlst As ListBox)
- Dim strCaption As String '存儲(chǔ)標(biāo)題
- Dim ctrColumnLabel As Control '自制列標(biāo)題
- Dim i As Integer
- Dim iPos As Integer '字符串查找的定位位置
- Dim iPos2 As Integer
- Dim intColumnCount As Integer '列表框的列數(shù)
- Dim strRowSource As String '列表框的行來(lái)源
- Dim strFldName As String '字段名
- Dim strFldNames As Variant '字段名數(shù)組
- Dim strHeader As String '列表框本身的列標(biāo)題內(nèi)容
- intColumnCount = rlst.ColumnCount '取列表框的列數(shù)
- strRowSource = lstObjDesc.RowSource '取列表框的行來(lái)源的SQL語(yǔ)句,去掉"ORDER BY"后面的內(nèi)容
- iPos = InStr(strRowSource, "Order By")
- If iPos > 0 Then strRowSource = Mid(strRowSource, 1, iPos - 1)
- iPos = InStr(strRowSource, "select") '取列表框行來(lái)源的SQL語(yǔ)句中"select"與"from"中間的字段串
- If iPos > 0 Then iPos = iPos + 7
- iPos2 = InStr(strRowSource, "from")
- strFldName = Mid(strRowSource, iPos, iPos2 - iPos)
- strFldNames = Split(strFldName, ",") '根據(jù)","拆分各個(gè)字段名稱(chēng)出來(lái)
- Set ctrColumnLabel = Me.Controls("lblColumn" & rintColumn)
- Application.Echo False '暫時(shí)關(guān)閉屏幕刷新,避免對(duì)列表框排序時(shí)造成畫(huà)面抖動(dòng)
- rlst.ColumnHeads = True '暫時(shí)顯示列表框的列表題,以便取出標(biāo)題給自制列標(biāo)題
- strHeader = rlst.Column(rintColumn, 0) '取出列表框當(dāng)前列的列標(biāo)題
- strCaption = ctrColumnLabel.Caption '取出自制列標(biāo)題
- strFldName = strFldNames(rintColumn) '取出當(dāng)前列所對(duì)應(yīng)的字段名稱(chēng)
- iPos = InStr(strFldName, " as") '可能用戶(hù)會(huì)使用 fldname as fldname1這種方式,故截取字符
- If iPos > 0 Then strFldName = Mid(strFldName, 1, iPos - 1)
-
- Select Case Right(strCaption, 1) '判斷當(dāng)前自制列標(biāo)題的標(biāo)題內(nèi)容
- '.......................
復(fù)制代碼
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)
x
|