星期一, 7月 06, 2015

[VFP] Microsoft Common Dialog

VFP 的 GetFile() 函數只能一次選擇一個檔案,因此改用 Microsoft Commom Dialog ActiveX 來達到可以多選檔案,在測試環境都 OK,直到放上正式環境才發現出線下面錯誤訊息:Class is not licensed for use


一看見這個錯誤訊息,直覺是想說這個 ActiveX 竟然還要有 License 驗證才可以用,有這麼神嗎,後來參考這篇文章 License error with ActiveX control added at run-time 把 Commom Dialog 包進自訂控件來使用,才避開這個問題


Commom Dialog ActiceX 使用方式
loCD = Createobject("IC_OCX.Comdlg32")
loCD.OleControl.Flags = 0x00080204 && 設定檔案多選
loCD.OleControl.Filter = "JPG|*.JPG"
loCD.OleControl.maxFileSize = 10000 && 該參數一定要存在,要不然會出現 Error
loCD.OleControl.InitDir = "C:\" 
loCD.OleControl.ShowOpen()
loCD.OleControl.FileName
特別要注意的是 Common Dialog 多選檔案後,FileName 內的值是用 CHR(0) 來分開每個檔案名稱,EX:在路徑 C:\ 內選擇 1.JPG 2.JPG 檔案,FileName 值會是 C:\ CHR(0) 1.JPG CHR(0) 2.JPG,單選檔案 FileName 值就是正常路徑,EX:C:\1.JPG

利用下面語法把多選檔案 FileName 值 show 出來觀察
MESSAGEBOX(CHRTRAN(loCD.OleControl.FileName, CHR(0), CHR(13)))

2 則留言:

  1. 版主好,
    請問你有收到我 7/29 在 妍枝棗棗 的留言嗎?
    JenniferHsu 8.04

    回覆刪除
  2. Jennifer Hsu 您好
    現在才看見留言內容 ^^

    回覆刪除