超級列表框排序模塊源碼
.版本 2.支持庫 iext.程序集 程序集1.子程序 _啟動子程序, 整數型, , 請在本子程序中放置易模塊初始化代碼_臨時子程序 () ' 在初始化代碼執行完畢后調用測試代碼返回 (0) ' 可以根據您的需要返回任意數值.子程序 _臨時子程序' 本名稱子程序用作測試程序用,僅在開發及調試環境中有效,編譯發布程序前將被系統自動清空,請將所有用作測試的臨時代碼放在本子程序中。 注意不要修改本子程序的名稱、參數及返回值類型。.子程序 超級列表框排序, 整數型, 公開, 返回排序時間,選中后排序還選中,必須項目數值不為0 沒有默認為1.參數 對象, 超級列表框.參數 列索引, 整數型, , 索引值從 0 開始。.參數 類型, 整數型, 可空, 0=數值;1=文本;2=日期時間;3=邏輯.參數 區分大小寫, 邏輯型, 可空, 真為區分,默認為真.參數 排序方式, 邏輯型, 可空, 真為小到大,默認為真.局部變量 排序時間, 整數型.局部變量 排序變量, 文本型, , "0".局部變量 序號數組, 整數型, , "0".局部變量 表項數值, 整數型, , "0".局部變量 變量, 整數型.局部變量 數據, 文本型.局部變量 列數, 整數型.局部變量 行數, 整數型.局部變量 單元數, 整數型.局部變量 選中項, 整數型排序時間 = 取啟動時間 ()類型 = 選擇 (類型 ≥ 0 且 類型 ≤ 3, 類型, 1)區分大小寫 = 選擇 (是否為空 (區分大小寫), 真, 區分大小寫)排序方式 = 選擇 (是否為空 (排序方式), 真, 排序方式).如果真 (對象.現行選中項 ≠ -1) .如果真 (對象.取表項數值 (對象.現行選中項) = 0) 對象.置表項數值 (對象.現行選中項, 1) .如果真結束 選中項 = 對象.取表項數值 (對象.現行選中項).如果真結束.計次循環首 (對象.取表項數 (), 變量) 數據 = 刪首尾空 (對象.取標題 (變量 - 1, 列索引)) .如果 (類型 ≠ 3) 單元數 = 二分查找 (排序變量, 數據, 類型, 區分大小寫) 插入成員 (排序變量, 單元數, 數據) 插入成員 (序號數組, 單元數, 變量 - 1) 插入成員 (表項數值, 單元數, 對象.取表項數值 (變量 - 1)) .否則 插入成員 (序號數組, 選擇 (數據 = “假”, 變量, 1), 變量 - 1) 插入成員 (表項數值, 選擇 (數據 = “假”, 變量, 1), 對象.取表項數值 (變量 - 1)) .如果結束.計次循環尾 ()列數 = 對象.取列數 ()行數 = 取數組成員數 (序號數組)單元數 = 行數 × 列數重定義數組 (排序變量, 假, 單元數).計次循環首 (單元數, 變量) 排序變量 [變量] = 對象.取標題 (序號數組 [取絕對值 (選擇 (排序方式, -1, 行數) - (變量 - 1) \ 列數)], (變量 - 1) % 列數).計次循環尾 ().計次循環首 (單元數, 變量) 對象.置標題 ((變量 - 1) \ 列數, (變量 - 1) % 列數, 排序變量 [變量]) 對象.置表項數值 ((變量 - 1) \ 列數, 表項數值 [取絕對值 (選擇 (排序方式, -1, 行數) - (變量 - 1) \ 列數)]).計次循環尾 ().如果真 (選中項 ≠ 0) .計次循環首 (對象.取表項數 (), 變量) .如果真 (對象.取表項數值 (變量 - 1) = 選中項) 對象.現行選中項 = 變量 - 1 對象.保證顯示 (變量 - 1) 跳出循環 () .如果真結束 .計次循環尾 ().如果真結束返回 (取啟動時間 () - 排序時間).子程序 二分查找, 整數型.參數 數組, 文本型, 數組.參數 待查, 文本型.參數 類型, 整數型.參數 區分大小寫, 邏輯型.局部變量 K, 整數型.局部變量 M, 整數型.局部變量 J, 整數型.局部變量 數值A, 雙精度小數型.局部變量 數值B, 雙精度小數型.局部變量 文本, 文本型K = 1M = 取數組成員數 (數組).如果真 (M = 0) 返回 (1).如果真結束.判斷開始 (類型 = 0) 數值A = 到數值 (待查) .如果真 (數值A ≥ 到數值 (數組 [M])) 返回 (M + 1) .如果真結束 .如果真 (數值A ≤ 到數值 (數組 [1])) 返回 (1) .如果真結束 .判斷循環首 (K < M - 1) J = (K + M) \ 2 數值B = 到數值 (數組 [J]) .如果真 (數值A = 數值B) K = J 跳出循環 () .如果真結束 .如果 (數值A < 數值B) M = J .否則 K = J .如果結束 .判斷循環尾 ().判斷 (類型 = 1) .如果真 (文本比較 (待查, 數組 [M], 區分大小寫) ≥ 0) 返回 (M + 1) .如果真結束 .如果真 (文本比較 (待查, 數組 [1], 區分大小寫) ≤ 0) 返回 (1) .如果真結束 .判斷循環首 (K < M - 1) J = (K + M) \ 2 .如果真 (文本比較 (待查, 數組 [J], 區分大小寫) = 0) K = J 跳出循環 () .如果真結束 .如果 (文本比較 (待查, 數組 [J], 區分大小寫) < 0) M = J .否則 K = J .如果結束 .判斷循環尾 ().判斷 (類型 = 2) 數值A = 取字節集數據 (到字節集 (到時間 (待查)), #雙精度小數型) .如果真 (數值A ≥ 取字節集數據 (到字節集 (到時間 (數組 [M])), #雙精度小數型)) 返回 (M + 1) .如果真結束 .如果真 (數值A ≤ 取字節集數據 (到字節集 (到時間 (數組 [1])), #雙精度小數型)) 返回 (1) .如果真結束 .判斷循環首 (K < M - 1) J = (K + M) \ 2 數值B = 取字節集數據 (到字節集 (到時間 (數組 [J])), #雙精度小數型) .如果真 (數值A = 數值B) K = J 跳出循環 () .如果真結束 .如果 (數值A < 數值B) M = J .否則 K = J .如果結束 .判斷循環尾 ().默認.判斷結束返回 (K + 1)
超級列表框排序例程
.版本 2.程序集 窗口程序集1.程序集變量 變量, 文本型.子程序 _超級列表框1_表頭被單擊.參數 被單擊列索引, 整數型.如果真 (被單擊列索引 = 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” .如果結束.如果真結束
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答