[非本書內容, 但與本書相關之 Q&A]

[與本書內容相關之 Q&A]


New Q&A 10/5

頁次 問題與解答
242 Q: 為 什 麼 我 一 執 行 第 九 章 的 Ambient.vbg 這 個 程 式 , Windows 95 就 告 訴 我 "這 個 程 式 執 行 無 效 , 請 洽 程 式 管 理 員 " , 然 後 除 了 Ambient.vbg 無 法 執 行 外 , 整 個 VB 程 式 也 被 關 閉 , 不 曉 得 這 是 什 麼 原 因 呢 ?
A: 原 因 實 在 有 點 莫 名 其 妙 , 當 初 磁 片 中 的 每 個 程 式 我 用「專業版」 都 測 試 過 沒 有 問 題 , 偏 偏 這 個 程 式 現 在 用「企業版」 執 行 就 會 出 現 以 上 現 象 , 解 決 方 法 可 利 用 文 字 編 輯 程 式 (例 如「記事本」) 將 AmbFrm.frm 最 後 的 三 行 (如 下) 去 掉 :

Private Sub Form_Load()

End Sub

至 於 為 什 麼 去 掉 這 三 行 就 可 以 , 著 實 令 人 納 悶 , 因 為 平 常 我 們 在 .frm 檔 案 中 放 置「空的」事 件 程 序 (如 以 上 的 Form_Load ) 並 不 會 影 響 VB 及 程 式 的 運 作 。 也 許 您 會 問 我 為 什 麼 要 放 「空的」事 件 程 序 , 那 不 是 我 放 的 , 而 是 VB 。


與本書內容相關之 Q&A

頁次 問題與解答
Q: 為 什 麼 我 將 製 作 好 的 ActiveX control 上 載 到 Web Server, 然 後 利 用 IE 開 啟 含 有 此 一 ActiveX control 的 網 頁 , 結 果 出 現 了 「 正 在 安 裝 元 件 ...」 , 但 最 後 卻 沒 有 成 功 ?
A: ActiveX control 無 法 成 功 下 載 的 情 況 可 能 有 以 下 幾 種 :
(1) .htm 檔 案 中 的 CLSID 與 .cab 檔 案 的 CLSID 並 不 相 同 : 這 通 常 發 生 於 只 上 載 重 新 編 譯 的 .cab 檔 案 到 Web Server, 而 未 同 時 上 載 .htm 檔 案 。 要 檢 查 .htm 檔 案 中 的 CLSID, 只 要 以 文 字 檔 編 輯 程 式 開 啟 Web Server 上 面 的 .htm 檔 案 即 可 看 到 , 而 檢 查 .cab 檔 案 的 CLSID 則 必 須 檢 查 自 己 機 器 .cab 檔 案 所 在 目 錄 的 Support 子 目 錄 的 .inf 檔 案 。
(2) 傳 輸 情 況 欠 佳 : 由 於 每 一 個 ActiveX control 的 執 行 至 少 必 須 再 下 載 Msvbvm50.dll, 此 一 檔 案 通 常 會 從 微 軟 的 ActiveX 總 站 下 載 , 由 於 此 一 檔 案 壓 縮 成 .cab 之 後 大 約 有 700KB, 傳 輸 順 利 的 話 大 約 要 5-7 分 鐘 , 若 傳 輸 不 順 利 , 就 很 難 預 測 了 。
(3) 利 用 安 裝 精 靈 製 作 .cab 檔 案 時 , 將 執 行 期 元 件 設 定 為 「 從 其 它 網 站 下 載 」 , 但 是 在 該 網 站 並 未 提 供 相 對 應 的 執 行 期 元 件 : 如 何 在 指 定 網 站 安 置 好 執 行 期 元 件 , 請 參 閱 本 書 補 充 教 材


Q: 為什麼我的書沒有附範例磁片?
A: 這是旗標工作人員一時疏忽所致 , 如果您也是其中之一 , 別忘了向旗標公司抱怨一番並要求補寄磁片 , 您絕對有權力這麼做 , 旗標公司的 Email 是 service@flag.com.tw , Fax 是 (02)397-5215 , 讀者服務熱線是 (02) 321-1271。(09/02)
Q: 我將某個 ActiveX control 的 .ocx 檔案刪除了 , 但它卻還會出現在 [專案/設定使用元件] 的交談窗中,請問如何將它刪除?
A: 每一個被使用的 ActiveX control , 在系統中都會有註冊的資訊 , 刪除 .ocx 檔案並不能刪除系統中的註冊 , 如何刪除系統中的註冊呢 ? 可恨的是 VB 並沒有提供適當的工具 , 為了解決此一問題 , 筆者特別撰寫一個程式 AxClear (呼叫 Windows API 寫的) 可用來刪除系統中的註冊 , 使用方法如下: (以刪除 kjcircle 為例)

直接輸入 ActiveX control 的名稱 , 再按下「給我殺下去!」即可。


44 Q: 關於 OLE Drag & Drop ,為什麼我照書中設定那些 Image 的屬性後 , 沒辦法做到 OLE Drag & Drop , 是不是 還有什麼要做的呢 ?
A: Image 所提供的自動化 OLE Drag & Drop 功能 , 僅支援 bmp 、 gif 、 jgp 、 wmf 等圖片格式 , 如果我們設定 ico 或 cur 格式的圖片給 Image , 則 Image * 還是可以接受 bmp 、 gif 、 jgp 、 wmf 等格式被拉曳過來的圖片 , 但無法從 Image 拉曳圖片到其他應用程式。
126 Q: p.126 頁中的兩個 Property Let 函數 , 一個有加上 refresh , 一個則沒有加上 refresh , 其間的差異為何 ?
A: 第一個 Property Let 加上 refresh 是多餘的 。 如果我們更新某一個屬性 , 而這個屬性會影響 control 顯示的結果 , 應該立刻呼叫 refresh , 但 p.126 的例子所使用的是既有的 control , 由於既有的 control 自己會更新顯示 , 因此此例中所呼叫 refresh 是多餘的。
115
145
Q: 115 頁呼叫 WriteProperty 的敘述是:

    PropBag.WriteProperty "Title", TitleData, "MyTitle"

而 145 頁呼叫 WriteProperty 的敘述卻是:

    Call PropBag.WriteProperty("Title", m_Title, m_def_Title)

兩者是相同的嗎?

A: 兩者是相同的 。 呼叫 [副程式] 或 [副程式型式的方法] , 以下兩種敘述的意義是相同的 :

    副程式名 參數1, 參數2, ...

    call 副程式名 ( 參數1, 參數2, ...)


225 Q: 書中 P225~226 中說明 ComboBox 不會發生 Change 事件 , 故改以 Click 事件來判斷, 據個人測試 Change 事件仍在 ComboBox 之 Text 屬性值改變時被觸動 .
A: 當 ComboBox 的 Text 屬性值改變時 , 確實會發生 Change 事件 , 但如果使用者不是以輸入的方式改變 ComboBox 的選項 , 而是使用滑鼠選擇既有的選項 , 則不會發生 Change 事件 , 所以在 Click 事件中 判別使用者的是否選擇了新的選項還是必要的 。

不過經由您的提醒 , 筆者倒發現原程式有個小問題 , 那就是使用者可能使用鍵盤來輸入資料 , 而他所輸入的資料若是 ComboxBox 選單之外的數值 , 程式該如何處置呢 ? 為了避免使用者以鍵盤輸入 ComboBox 選單之外的資料 , 筆者覺得應該將 ComboBox 的 Style 屬性由預設定的 [0 - 組合下拉式] 改成 [2 - 單純下拉式] 。 (註:單純下拉式的 ComboBox 只能輸入或選取 ComboBox 選單之內的選項 )


335 Q: 為什麼我無法載入第 11 章的 marquee1.vbp ?
A: marquee1.vbp 會使用 IE 所提供的 Marquee 物件 , 因此載入本專案以前 , 必須先安裝好 IE。
335 Q: 為什麼我一執行第 11 章的 marquee1.vbp , VB 就會當掉 ?
A: 若 IE 為 3.0 版就會出現此一現象 , 請將您的 IE 升級為 3.01 或 3.02 版。
(您可在 VB5 光碟片的 \Tools\Msie 目錄底下找到 IE 3.02 中文版)
515 Q: 開啟 MaxMinEx.vbp 專案時 , 出現以下訊息:

    無法設定版本相容元件為 : C:\kj\BOOK\VB5\ch16\MaxMinEx.exe

開啟 MaxMinDl.vbp 專案時 , 出現以下訊息:

    無法設定版本相容元件為 : C:\kj\BOOK\VB5\ch16\MaxMinDl.exe

而執行「檔案/製成XXX」,則無法成功 。

A: 開啟 MaxMinDl.vbp 及 MaxMinEx.vbp 所出現的訊息 , 是筆者一時的疏忽 , 十分抱歉 ! 您可以在開啟後重新存檔 , 以後就不會出現相同的訊息了。

「檔案/製成XXX」無法成功 , 是因為同目錄中含有 「唯讀」的 MaxMinDl.dll 及 MaxMinEx.exe 檔案 , 請將這兩個檔案刪除 , 即可解決此一問題 。


非本書內容, 但與本書相關之 Q&A

問題與解答
Q: 請問只有 VB5.0 中文普及版能學 ActiveX 嗎 ? 買了您的大作之後才知道普及版沒有 ActiveX 開發工具 , 那 這本「VB5 與ActiveX」不是白買了嗎 ? 哪裡可以下載或補救 呢 ? 謝謝 。 不會要我再去買專業版吧!
A: 可以的 , 但請參考以下說明 。

普及版光碟的 Tools/Cce 目錄底下含有 VB5CCE 版 , 安裝後可 用來開發 ActiveX control , 對「VB5 與 ActiveX」一書而言 , 除了第 13 章及第 16 章之外 , 絕大部份章節的範例也都適用 於 VB5CCE 版。

但 VB5CCE 只有英文版 , 而「VB5 與 ActiveX」一書則是以 中文版為解說的對象 , 所以您在對照畫面時可能會比較辛苦 一點 。