易語言高級對話框V1.49模塊源碼
系統結構:高級對話框測試,高級信息框,高級瀏覽文件夾,高級瀏覽文件夾_回調函數,高級顏色選擇器,清除,初始化,打開,文件名,
======EC_得力軟件_高級對話框_接口程序集
| |
| |------ _啟動子程序
| |
| |------ _臨時子程序
| |
| |------ 高級對話框測試
| |
| |------ 高級信息框
| |
| |------ 高級瀏覽文件夾
| |
| |------ 高級瀏覽文件夾_回調函數
| |
| |------ 高級顏色選擇器
| |
| |
======高級對話框
| |
| |------ _初始化
| |
| |------ _銷毀
| |
| |------ 清除
| |
| |------ 初始化
| |
| |------ 打開
| |
| |------ 文件名
調用的DLL命令:
.程序集 高級對話框, , 公開, 作者:小飛俠 本類參考了lihaidomain的源碼,在此表示感謝!(同時需要感謝binbinbin的整理!)
.程序集變量 集_打開文件, 類型_文件結構
.程序集變量 集_對話框類型, 整數型, , , 0.#打開文件對話框(默認) 1.#保存文件對話框
.程序集變量 集_默認文件名, 文本型
.程序集變量 集_創建時提示, 整數型, , , 當類型為打開文件對話框時,如果用戶指定了一個不存在的文件名稱,是否提示用戶即將創建它。默認值為假。
.程序集變量 集_文件必須存在, 整數型, , , 當類型為打開文件對話框時,是否允許用戶指定一個不存在的文件。默認值為真。
.程序集變量 集_文件覆蓋提示, 整數型, , , 當類型為保存文件對話框時,如果用戶指定了一個已經存在的文件,是否詢問用戶確定覆蓋此文件。默認值為真。
.程序集變量 集_目錄必須存在, 整數型, , , 是否允許用戶指定一個不存在的目錄。默認值為真。
.程序集變量 集_是否支持多選, 整數型, , , 是否需要使用多選。默認值為假。
.程序集變量 集_被選擇文件名, 文本型, , , 執行打開命令后,用來臨時保存被打開或保存的文件名或文件名數組(以分號進行分割保存的文本變量)
.子程序 _初始化, , , 當基于本類的對象被創建后,此方法會被自動調用
清除 ()
.子程序 _銷毀, , , 當基于本類的對象被銷毀前,此方法會被自動調用
.子程序 清除, , 公開, 將本對話框的內容釋放并清空。如果不調用本方法,則本對話框在退出其作用區域時會自動被釋放。例如:假設本對話框存在于子程序局部變量中,當子程序調用退出時,本對話框會被自動釋放。
集_創建時提示 = #OFN_CREATEPROMPT
集_文件必須存在 = #OFN_FILEMUSTEXIST
集_文件覆蓋提示 = #OFN_OVERWRITEPROMPT
集_目錄必須存在 = #OFN_PATHMUSTEXIST
連續賦值 (0, 集_對話框類型, 集_是否支持多選)
連續賦值 (“”, 集_默認文件名, 集_被選擇文件名)
.子程序 初始化, , 公開, 初始化設置高級對話框組件的基本參數
.參數 對話框類型, 整數型, 可空, 0.#打開文件對話框(默認) 1.#保存文件對話框
.參數 對話框標題, 文本型, 可空, 對話框窗口標題,如為空則顯示默認文本;
.參數 過濾器, 文本型, 可空, 通過設置過濾器,來過濾不需要顯示的文件,如果需要設置多后綴名文件,可以用“;”來分隔,例如:“音樂文件(*.mp3;*.wav)|*.mp3;*.wav|視頻文件(*.rm;*.avi;*.mkv)|*.rm;*.avi;*.mkv”,如為空值則打開所有類型文件或保存為任意類型的文件;
.參數 初始過濾器, 整數型, 可空, 指定初始的過濾器,0為第一個過濾器。默認值為0;
.參數 初始目錄, 文本型, 可空, 對話框創建后,自動跳轉到的目錄。如不指定,則一般情況下默認路徑為從“我的文檔”開始;
.參數 默認文件名, 文本型, 可空, 對話框創建后,默認顯示的文件名名稱,多用于[保存文件對話框],如自行指定,請不需要指定擴展名,擴展名將以當前使用的過濾器為準;
.參數 創建時提示, 邏輯型, 可空, 當類型為打開文件對話框時,如果用戶指定了一個不存在的文件名稱,是否提示用戶即將創建它。默認值為真。
.參數 文件必須存在, 邏輯型, 可空, 當類型為打開文件對話框時,是否允許用戶指定一個不存在的文件。默認值為真。
.參數 文件覆蓋提示, 邏輯型, 可空, 當類型為保存文件對話框時,如果用戶指定了一個已經存在的文件,是否詢問用戶確定覆蓋此文件。默認值為真。
.參數 目錄必須存在, 邏輯型, 可空, 是否允許用戶指定一個不存在的目錄。默認值為真。
.參數 是否支持多選, 邏輯型, 可空, 是否允許當前對話框同時打開多個文件。默認值為假。
.局部變量 部_臨時過濾器, 文本型
.局部變量 部_過濾器數組, 文本型, , "0"
高級對話框.清除 ()
' ========================================================================
集_被選擇文件名 = “” ' 清空此值,否則在同一程序集中二次調用可能會返回前一次的結果。
集_默認文件名 = 默認文件名
集_對話框類型 = 對話框類型
部_臨時過濾器 = 選擇 (對話框類型 = #打開文件對話框, “所有文件(*.*)”, “自定文件(*.*)”)
' ========================================================================
集_打開文件.實例句柄 = API_GetModuleHandle (取執行文件名 ())
集_打開文件.標題文本 = 對話框標題
集_打開文件.初始目錄 = 初始目錄
'源碼來源于[易語言源碼網 www.csports999.com]
集_打開文件.過濾器 = 到字節集 (選擇 (過濾器 ≠ “”, 過濾器, 部_臨時過濾器))
集_打開文件.過濾器 = 子字節集替換 (集_打開文件.過濾器, { 124 }, { 0 }, , ) + { 0, 0 }
集_打開文件.過濾器索引 = 選擇 (初始過濾器 ≤ 0, 1, 初始過濾器 + 1)
' ========================================================================
部_過濾器數組 = 分割文本 (過濾器, “|”, )
.如果真 (取數組成員數 (部_過濾器數組) ≥ 集_打開文件.過濾器索引 + 1) ' 過濾器索引從1開始,擴展名從是2開始,因此再加1;
集_打開文件.默認擴展名 = 部_過濾器數組 [集_打開文件.過濾器索引 + 1]
集_打開文件.默認擴展名 = 取文本右邊 (集_打開文件.默認擴展名, 取文本長度 (集_打開文件.默認擴展名) - 倒找文本 (集_打開文件.默認擴展名, “.”, , 假))
'本源碼來自易語言源碼網 www.csports999.com 歡迎使用
.如果真結束
' ========================================================================
.如果真 (是否為空 (創建時提示) = 假)
集_創建時提示 = 選擇 (文件必須存在, #OFN_CREATEPROMPT, 0)
' //當類型為打開文件對話框時,如果用戶指定了一個不存在的文件名稱,是否提示用戶即將創建它。默認值為假。
.如果真結束
'本源碼來自易語言源碼網 www.csports999.com 歡迎使用
.如果真 (是否為空 (文件必須存在) = 假)
集_文件必須存在 = 選擇 (文件必須存在, #OFN_FILEMUSTEXIST, 0)
' //當類型為打開文件對話框時,是否允許用戶指定一個不存在的文件。默認值為真。
.如果真結束
'本源碼來自易語言源碼網 www.csports999.com 歡迎使用
.如果真 (是否為空 (文件覆蓋提示) = 假)
集_文件覆蓋提示 = 選擇 (文件覆蓋提示, #OFN_OVERWRITEPROMPT, 0)
' //當類型為保存文件對話框時,如果用戶指定了一個已經存在的文件,是否詢問用戶確定覆蓋此文件。默認值為真。
'本源碼來自易語言源碼網 www.csports999.com 歡迎使用
.如果真結束
.如果真 (是否為空 (目錄必須存在) = 假)
集_目錄必須存在 = 選擇 (目錄必須存在, #OFN_PATHMUSTEXIST, 0)
' //是否允許用戶指定一個不存在的目錄。默認值為真。
.如果真結束
.如果真 (是否為空 (是否支持多選) = 假)
集_是否支持多選 = 選擇 (是否支持多選, #OFN_ALLOWMULTISELECT, 0)
' //是否需要使用文件多選。默認值為假。
.如果真結束
.子程序 打開, 邏輯型, 公開, 打開當前類型的對話框(通過[初始化]命令進行設置),返回一個邏輯值。如果為真,表示用戶已通過該對話框輸入了有效數據,否則表示用戶取消了該對話框,且沒有輸入任何有效數據。
.參數 父窗口句柄, 整數型, , 指定當前對話框的父窗口句柄
.參數 緩沖區長度, 整數型, 可空, 指定當前對話框可接受的最大緩沖區長度,本命令內部默認值為:單選[256]、多選[2048],如果該長度值不能滿足您的要求,請自行指定。
.局部變量 部_循環計次, 整數型
.局部變量 部_已選文件, 文本型
.局部變量 部_臨時文件, 文本型
.局部變量 部_是否成功, 邏輯型
.局部變量 部_目標文件夾, 文本型
.局部變量 部_字節集變量, 字節集
.局部變量 部_文件名數組, 文本型, , "0"
集_打開文件.文件名 = { }
集_打開文件.窗口句柄 = 父窗口句柄
集_被選擇文件名 = 選擇 (集_默認文件名 = “”, “”, 集_默認文件名)
部_字節集變量 = 選擇 (集_被選擇文件名 = “”, { }, 子字節集替換 (到字節集 (集_被選擇文件名), { 59 }, { 0 }, , ))
' ========================================================================
緩沖區長度 = 選擇 (是否為空 (緩沖區長度), 選擇 (集_是否支持多選 = 0, 256, 2048), 緩沖區長度)
集_打開文件.文件名 = 部_字節集變量 + 取空白字節集 (緩沖區長度 - 取字節集長度 (部_字節集變量) + 1)
集_打開文件.文件名最大長度 = 取字節集長度 (集_打開文件.文件名)
集_打開文件.結構大小 = 76
' ========================================================================
.判斷開始 (集_對話框類型 = #打開文件對話框) ' 打開文件,
集_打開文件.標記 = 位或 (#OFN_HIDEREADONLY, #OFN_EXPLORER, #OFN_ENABLESIZING, 集_創建時提示, 集_文件必須存在, 集_文件覆蓋提示, 集_目錄必須存在, 0, 集_是否支持多選)
部_是否成功 = API_GetOpenFileName (集_打開文件)
.判斷 (集_對話框類型 = #保存文件對話框) ' 保存文件
集_打開文件.標記 = 位或 (#OFN_EXPLORER, #OFN_ENABLESIZING, 集_文件覆蓋提示, 集_目錄必須存在, 0, 集_是否支持多選)
部_是否成功 = API_GetSaveFileName (集_打開文件)
.默認
.判斷結束
' ========================================================================
.如果真 (部_是否成功 = 真)
部_字節集變量 = 集_打開文件.文件名
部_字節集變量 = 取字節集左邊 (部_字節集變量, 尋找字節集 (部_字節集變量, { 0, 0 }, )) ' 以字節0為結尾;
.判斷開始 (集_是否支持多選 ≠ #OFN_ALLOWMULTISELECT) ' 單選狀態
部_已選文件 = 取字節集數據 (部_字節集變量, #文本型, )
.判斷 (集_是否支持多選 = #OFN_ALLOWMULTISELECT) ' 多選狀態
' 因為“0”會被認為是結束符,所以這里先將結束符“0”替換為分割符“|”,最終返回格式為“x:\xxx|a.xxx|b.xxx|c.xxx”;
部_字節集變量 = 子字節集替換 (部_字節集變量, { 0 }, { 124 }, , )
部_文件名數組 = 分割文本 (到文本 (部_字節集變量), “|”, )
.如果真 (取數組成員數 (部_文件名數組) > 1)
部_目標文件夾 = 部_文件名數組 [1]
刪除成員 (部_文件名數組, 1, 1)
.如果真 (取文本右邊 (部_目標文件夾, 1) ≠ “\”)
部_目標文件夾 = 部_目標文件夾 + “\”
.如果真結束
.如果真結束
.計次循環首 (取數組成員數 (部_文件名數組), 部_循環計次)
.如果 (尋找文本 (部_文件名數組 [部_循環計次], “:”, , 真) = -1) ' 判斷是否為完整路徑;
部_臨時文件 = 部_目標文件夾 + 部_文件名數組 [部_循環計次]
.否則
部_臨時文件 = 部_文件名數組 [部_循環計次]
.如果結束
部_已選文件 = 部_已選文件 + 部_臨時文件 + “;”
.計次循環尾 ()
.默認
.判斷結束
.如果真結束
' ========================================================================
集_被選擇文件名 = 部_已選文件
返回 (部_是否成功)
.子程序 文件名, 文本型, 公開, 返回被打開或選擇的文件名。如為多選狀態,文件路徑以";"分隔。
返回 (集_被選擇文件名)
易語言卷簾工具箱源碼,初始化卷簾,取星期,更換風格,搜索文件,線程搜索,修改底色,獲取信息,取信息記錄,取網絡信息...
易語言僅用核心支持庫實現對外部數據庫的操作ADODB操作外部數據庫例程源碼,根據村組查詢數據,數據庫_讀取數據到高級表格,數據庫_保存高級表格數據到數據庫,數據庫_讀取數據到列表...
易語言僅用核心支持庫實現對外部數據庫的操作ADODB操作外部數據庫例程源碼,根據村組查詢數據,數據庫_讀取數據到高級表格,數據庫_保存高級表格數據到數據庫,數據庫_讀取數據到列表...
易語言僅用核心支持庫實現對外部數據庫的操作ADODB操作外部數據庫例程源碼,根據村組查詢數據,數據庫_讀取數據到高級表格,數據庫_保存高級表格數據到數據庫,數據庫_讀取數據到列表...
易語言兩個文件內存中通訊源碼,子程序1,打開文件,生成空文件,生成重復字節文件,移到文件首,移到文件尾,移動讀寫位置,取讀寫位置,關閉文件,取文件長度,寫出字節集,是否在文件尾,取錯...
易語言易模塊管理器Include目錄源碼,CopyTo_CreateProcessDebugInfo,CopyTo_CreateThreadDebugInfo,CopyTo_ExitThreadDebugInfo,CopyTo_ExitProcessDebugInfo,CopyTo_LoadDllDebugInfo,CopyTo_UnloadDllDebugInfo,CopyTo_ExceptionDebugInfo,Copy...
易語言卷簾工具箱源碼,初始化卷簾,取星期,更換風格,搜索文件,線程搜索,修改底色,獲取信息,取信息記錄,取網絡信息...
子程序1,打開文件,生成空文件,生成重復字節文件,移到文件首,移到文件尾,移動讀寫位置,取讀寫位置,關閉文件,取文件長度,寫出字節集,是否在文件尾,取錯誤信息,讀入字節集,讀入2M字節集,清除文件緩沖區,讀入文本,寫出文本,寫文本行,讀入一行,插入字節集,取文件號...
初始化卷簾,取星期,更換風格,搜索文件,線程搜索,修改底色,獲取信息,取信息記錄,取網絡信息...