取得開啟檔案名稱 取得儲存檔案名稱 印表機列印設定 選擇字型對話盒 |
取得多重開啟檔案名稱 選擇顏色對話盒 紙張留白設定對話盒 取得印表機不可列印紙張邊緣 |
很多人常為了利用共通對話盒取得開啟檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用
函數名:myGetOpenFileName,傳回值為共通對話盒所選定之檔案名稱
引數 類型 說明 hTitle 可省略 對話盒抬頭 hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明 DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄 DefaultFileName 可省略 預設開啟檔名 wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明 hWnd 可省略 呼叫本函數的視窗代號 範例:
Debug.Print myGetOpenFileName ' 傳回值為共通對話盒所選定之檔案名稱
說明:
本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd,字串工具模組的傳回全部取代字串:myReplaceString
註解:
OFN_NOREADONLYRETURN = &H8000& ' 若無先將轉為長整數,則此常數將造成錯誤,在 Windows 2000 / XP 將發生直接終結程式現象
若需先預設某一目錄為預設開啟目錄,且不希望跳出對話框時,可採用:
Private Sub Form_Load()
summy = myGetOpenFileName(, , App.Path, , -1) ' 設定起始目錄
End Sub
很多人常為了利用共通對話盒取得開啟檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用
函數名:myGetMutliOpenFileName,傳回值為共通對話盒所選定之檔案名稱
引數 類型 說明 hTitle 可省略 對話盒抬頭 hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明 DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄 DefaultFileName 可省略 預設開啟檔名 wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明 hWnd 可省略 呼叫本函數的視窗代號 範例:
tfn=myGetMutliOpenFileName ' 傳回值為共通對話盒所選定之多重檔案名稱陣列
For i=Lbound(tfn) to Ubound(tfn):? tfn(i):Next i說明:
本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd,字串工具模組的傳回全部取代字串:myReplaceString,字串工具模組的傳回以特定字串分隔的中間字串:InstrString
附註:
本函數目前檔案名暫存區有 32 KB,約可容納 2,730 檔名
很多人常為了利用共通對話盒取得儲存檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用
函數名:myGetSaveFileName,傳回值為共通對話盒所選定之檔案名稱
引數 類型 說明 hTitle 可省略 對話盒抬頭 hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明 DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄 DefaultFileName 可省略 預設開啟檔名 wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明 hWnd 可省略 呼叫本函數的視窗代號 範例:
Debug.Print myGetSaveFileName ' 傳回值為共通對話盒所選定之檔案名稱
說明:
本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd,字串工具模組的傳回全部取代字串:myReplaceString
很多人常為了利用共通對話盒取得顏色長整數值,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用
函數名:myChooseColor,傳回值為共通對話盒所選定之顏色長整數值
引數 類型 說明 hColor 可省略 預設顏色 hWnd 可省略 呼叫本函數的視窗代號 範例:
Debug.Print myChooseColor ' 傳回值為共通對話盒所選定之顏色長整數值
說明:
若按下取消,則傳回值為 -1 ,本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd
很多人常為了利用共通對話盒取得顏色長整數值,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用,本函數可透過引數傳回列印頁數設定,但這個資訊利用需由程式設計師自行運用,另本函數可透過對應的命令鈕設定印表機,因此另增加印表機的對應,但 Visual Basic 中 Printer 物件的屬性有限,所以我只能針對 Printer 中有的屬性設定
函數名:myPrintDlg,傳回值為列印份數
引數 類型 說明 wFlags 可省略 印表機列印設定的旗標 nMinPage 可省略 最小頁碼,參見註 1 nMaxPage 可省略 最大頁碼,參見註 1 nFromPage 可省略 起始頁碼,參見註 1 nToPage 可省略 終了頁碼,參見註 1 hWnd 可省略 呼叫本函數的視窗代號 註 1 :若為非 0 值,則自動加上旗標 PD_PAGENUMS,但 nMinPage 與 nMaxPage 不可省略
範例:
myPrintDlg ,1,10,nf,nt ' 起始頁碼、終了頁碼均為 Empty
Debug.Print nf,nt ' 其值為 2, 5
說明:
本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd
這個對話盒 Visual Basic 並未包裝,所以無對應 Visual Basic 的部分說明,本函數可透過引數傳回紙張邊緣留白,但這個資訊利用需由程式設計師自行運用,本函數中亦自動抓取並加入最小紙張邊緣留白,使用者若設定小於最小紙張邊緣留白,將自動以最小紙張邊緣留白取代,另本函數可透過對應的命令鈕設定印表機,因此另增加印表機的對應,但 Visual Basic 中 Printer 物件的屬性有限,所以我只能針對 Printer 中有的屬性設定
函數名:myPageSetupDlg,傳回值目前未定義
引數 類型 說明 wFlags 可省略 紙張設定的旗標 pLeft 可省略 紙張左緣留白,參見註 1 pTop 可省略 紙張上緣留白,參見註 1 pRight 可省略 紙張右緣留白,參見註 1 pBottom 可省略 紙張下緣留白,參見註 1 hWnd 可省略 呼叫本函數的視窗代號 註 1 :若為非 0 值,則自動加上旗標 PSD_MARGINS,單位為 0.01 毫米
範例:
myPageSetupDlg ,pLeft,pTop,pRight,pBottom ' 邊緣留白均為 Empty
Debug.Print pLeft,pTop,pRight,pBottom ' 其值為 3000, 1500, 1000, 3500
說明:
本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd
很多人常為了利用共通對話盒設定字型各項參數,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用
函數名:myChooseFont,傳回值為共通對話盒所設定字型參數的標準字型物件
引數 類型 說明 hFont 可省略 來源標準字型物件,stdFont hColor 可省略 標準字型物件無顏色可供設定,透過本引數設定色彩 wFlags 可省略 字型設定的旗標 MinFontSize 可省略 限制最小字型尺寸,參見註 1 MaxFontSize 可省略 限制最大字型尺寸,參見註 1 hWnd 可省略 呼叫本函數的視窗代號 註 1 :若為非 0 值,則自動加上旗標 CF_LimitSize
範例:
fColor = Me.ForeColor
Set Me.Font = myChooseFont(Me.Font, fColor, , 16, 20)
Me.ForeColor = fColor
說明:
設定 Form 的字型格式,並限制字型大小介於 16 ~ 20 ,因字型顏色設定 .ForeColor 中,而 .ForeColor 為屬性無法透過引數設定,必須透過中間變數,若按下取消,則傳回值為 Nothing,本函數需參照視窗工具模組的尋找自己的 hWnd:myHWnd
私有函數名:myGetPrinterPaperLimit,無傳回值,採引數傳遞紙張邊緣,單位為 0.01 毫米
引數 類型 說明 MinMargin RECT 使用者自訂型態 範例:
myGetPrinterPaperLimit .rtMinMargin
With tPageSetup
.rtMargin.Left = pLeft
.rtMargin.Top = pTop
.rtMargin.Right = pRight
.rtMargin.Bottom = pBottom
End With
說明:
本函數為紙張留白設定對話盒之子函數,以避免使用者在紙張留白設定對話盒中設定超出印表機可列印範圍,因此本函數屬本模組之私有 (Private) 函數而非公用 (Public) 函數,建議依所需求加入個人程式中