易語言超級列表框點擊表頭進行排序的代碼
更新時間:2018年11月23日 15:52:30 作者:易語言源碼教程
今天小編就為大家分享一篇關于易語言超級列表框點擊表頭進行排序的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
超級列表框排序模塊源碼
.版本 2
.支持庫 iext
.程序集 程序集1
.子程序 _啟動子程序, 整數(shù)型, , 請在本子程序中放置易模塊初始化代碼
_臨時子程序 () ' 在初始化代碼執(zhí)行完畢后調用測試代碼
返回 (0) ' 可以根據(jù)您的需要返回任意數(shù)值
.子程序 _臨時子程序
' 本名稱子程序用作測試程序用,僅在開發(fā)及調試環(huán)境中有效,編譯發(fā)布程序前將被系統(tǒng)自動清空,請將所有用作測試的臨時代碼放在本子程序中。 注意不要修改本子程序的名稱、參數(shù)及返回值類型。
.子程序 超級列表框排序, 整數(shù)型, 公開, 返回排序時間,選中后排序還選中,必須項目數(shù)值不為0 沒有默認為1
.參數(shù) 對象, 超級列表框
.參數(shù) 列索引, 整數(shù)型, , 索引值從 0 開始。
.參數(shù) 類型, 整數(shù)型, 可空, 0=數(shù)值;1=文本;2=日期時間;3=邏輯
.參數(shù) 區(qū)分大小寫, 邏輯型, 可空, 真為區(qū)分,默認為真
.參數(shù) 排序方式, 邏輯型, 可空, 真為小到大,默認為真
.局部變量 排序時間, 整數(shù)型
.局部變量 排序變量, 文本型, , "0"
.局部變量 序號數(shù)組, 整數(shù)型, , "0"
.局部變量 表項數(shù)值, 整數(shù)型, , "0"
.局部變量 變量, 整數(shù)型
.局部變量 數(shù)據(jù), 文本型
.局部變量 列數(shù), 整數(shù)型
.局部變量 行數(shù), 整數(shù)型
.局部變量 單元數(shù), 整數(shù)型
.局部變量 選中項, 整數(shù)型
排序時間 = 取啟動時間 ()
類型 = 選擇 (類型 ≥ 0 且 類型 ≤ 3, 類型, 1)
區(qū)分大小寫 = 選擇 (是否為空 (區(qū)分大小寫), 真, 區(qū)分大小寫)
排序方式 = 選擇 (是否為空 (排序方式), 真, 排序方式)
.如果真 (對象.現(xiàn)行選中項 ≠ -1)
.如果真 (對象.取表項數(shù)值 (對象.現(xiàn)行選中項) = 0)
對象.置表項數(shù)值 (對象.現(xiàn)行選中項, 1)
.如果真結束
選中項 = 對象.取表項數(shù)值 (對象.現(xiàn)行選中項)
.如果真結束
.計次循環(huán)首 (對象.取表項數(shù) (), 變量)
數(shù)據(jù) = 刪首尾空 (對象.取標題 (變量 - 1, 列索引))
.如果 (類型 ≠ 3)
單元數(shù) = 二分查找 (排序變量, 數(shù)據(jù), 類型, 區(qū)分大小寫)
插入成員 (排序變量, 單元數(shù), 數(shù)據(jù))
插入成員 (序號數(shù)組, 單元數(shù), 變量 - 1)
插入成員 (表項數(shù)值, 單元數(shù), 對象.取表項數(shù)值 (變量 - 1))
.否則
插入成員 (序號數(shù)組, 選擇 (數(shù)據(jù) = “假”, 變量, 1), 變量 - 1)
插入成員 (表項數(shù)值, 選擇 (數(shù)據(jù) = “假”, 變量, 1), 對象.取表項數(shù)值 (變量 - 1))
.如果結束
.計次循環(huán)尾 ()
列數(shù) = 對象.取列數(shù) ()
行數(shù) = 取數(shù)組成員數(shù) (序號數(shù)組)
單元數(shù) = 行數(shù) × 列數(shù)
重定義數(shù)組 (排序變量, 假, 單元數(shù))
.計次循環(huán)首 (單元數(shù), 變量)
排序變量 [變量] = 對象.取標題 (序號數(shù)組 [取絕對值 (選擇 (排序方式, -1, 行數(shù)) - (變量 - 1) \ 列數(shù))], (變量 - 1) % 列數(shù))
.計次循環(huán)尾 ()
.計次循環(huán)首 (單元數(shù), 變量)
對象.置標題 ((變量 - 1) \ 列數(shù), (變量 - 1) % 列數(shù), 排序變量 [變量])
對象.置表項數(shù)值 ((變量 - 1) \ 列數(shù), 表項數(shù)值 [取絕對值 (選擇 (排序方式, -1, 行數(shù)) - (變量 - 1) \ 列數(shù))])
.計次循環(huán)尾 ()
.如果真 (選中項 ≠ 0)
.計次循環(huán)首 (對象.取表項數(shù) (), 變量)
.如果真 (對象.取表項數(shù)值 (變量 - 1) = 選中項)
對象.現(xiàn)行選中項 = 變量 - 1
對象.保證顯示 (變量 - 1)
跳出循環(huán) ()
.如果真結束
.計次循環(huán)尾 ()
.如果真結束
返回 (取啟動時間 () - 排序時間)
.子程序 二分查找, 整數(shù)型
.參數(shù) 數(shù)組, 文本型, 數(shù)組
.參數(shù) 待查, 文本型
.參數(shù) 類型, 整數(shù)型
.參數(shù) 區(qū)分大小寫, 邏輯型
.局部變量 K, 整數(shù)型
.局部變量 M, 整數(shù)型
.局部變量 J, 整數(shù)型
.局部變量 數(shù)值A, 雙精度小數(shù)型
.局部變量 數(shù)值B, 雙精度小數(shù)型
.局部變量 文本, 文本型
K = 1
M = 取數(shù)組成員數(shù) (數(shù)組)
.如果真 (M = 0)
返回 (1)
.如果真結束
.判斷開始 (類型 = 0)
數(shù)值A = 到數(shù)值 (待查)
.如果真 (數(shù)值A ≥ 到數(shù)值 (數(shù)組 [M]))
返回 (M + 1)
.如果真結束
.如果真 (數(shù)值A ≤ 到數(shù)值 (數(shù)組 [1]))
返回 (1)
.如果真結束
.判斷循環(huán)首 (K < M - 1)
J = (K + M) \ 2
數(shù)值B = 到數(shù)值 (數(shù)組 [J])
.如果真 (數(shù)值A = 數(shù)值B)
K = J
跳出循環(huán) ()
.如果真結束
.如果 (數(shù)值A < 數(shù)值B)
M = J
.否則
K = J
.如果結束
.判斷循環(huán)尾 ()
.判斷 (類型 = 1)
.如果真 (文本比較 (待查, 數(shù)組 [M], 區(qū)分大小寫) ≥ 0)
返回 (M + 1)
.如果真結束
.如果真 (文本比較 (待查, 數(shù)組 [1], 區(qū)分大小寫) ≤ 0)
返回 (1)
.如果真結束
.判斷循環(huán)首 (K < M - 1)
J = (K + M) \ 2
.如果真 (文本比較 (待查, 數(shù)組 [J], 區(qū)分大小寫) = 0)
K = J
跳出循環(huán) ()
.如果真結束
.如果 (文本比較 (待查, 數(shù)組 [J], 區(qū)分大小寫) < 0)
M = J
.否則
K = J
.如果結束
.判斷循環(huán)尾 ()
.判斷 (類型 = 2)
數(shù)值A = 取字節(jié)集數(shù)據(jù) (到字節(jié)集 (到時間 (待查)), #雙精度小數(shù)型)
.如果真 (數(shù)值A ≥ 取字節(jié)集數(shù)據(jù) (到字節(jié)集 (到時間 (數(shù)組 [M])), #雙精度小數(shù)型))
返回 (M + 1)
.如果真結束
.如果真 (數(shù)值A ≤ 取字節(jié)集數(shù)據(jù) (到字節(jié)集 (到時間 (數(shù)組 [1])), #雙精度小數(shù)型))
返回 (1)
.如果真結束
.判斷循環(huán)首 (K < M - 1)
J = (K + M) \ 2
數(shù)值B = 取字節(jié)集數(shù)據(jù) (到字節(jié)集 (到時間 (數(shù)組 [J])), #雙精度小數(shù)型)
.如果真 (數(shù)值A = 數(shù)值B)
K = J
跳出循環(huán) ()
.如果真結束
.如果 (數(shù)值A < 數(shù)值B)
M = J
.否則
K = J
.如果結束
.判斷循環(huán)尾 ()
.默認
.判斷結束
返回 (K + 1)
超級列表框排序例程
.版本 2
.程序集 窗口程序集1
.程序集變量 變量, 文本型
.子程序 _超級列表框1_表頭被單擊
.參數(shù) 被單擊列索引, 整數(shù)型
.如果真 (被單擊列索引 = 0)
.如果 (標簽1.標題 = “1”)
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 0, 1, 真, 真)
' 重新排列圖標 ()
標簽1.標題 = “2”
.否則
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 0, 1, 真, 假)
' 重新排列圖標 ()
標簽1.標題 = “1”
.如果結束
.如果真結束
.如果真 (被單擊列索引 = 1)
.如果 (標簽1.標題 = “1”)
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 1, 1, 真, 真)
' 重新排列圖標 ()
標簽1.標題 = “2”
.否則
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 1, 1, 真, 假)
' 重新排列圖標 ()
標簽1.標題 = “1”
.如果結束
.如果真結束
.如果真 (被單擊列索引 = 2)
.如果 (標簽1.標題 = “1”)
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 2, 1, 真, 真)
' 重新排列圖標 ()
標簽1.標題 = “2”
.否則
' 處理表和圖標對應 ()
超級列表框排序 (超級列表框1, 2, 1, 真, 假)
' 重新排列圖標 ()
標簽1.標題 = “1”
.如果結束
.如果真結束
運行結果:

總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

