Access TreeView樹控件兼容性問題之奇葩偏方

2017-03-23 09:03:08
紅塵如煙-Office交流網
原創
2678
[i=s] 本帖最后由 紅塵如煙 于 2017-3-23 09:06 編輯

Windows系統自帶的通用控件庫 MSCOMCTL.OCX 是一個很好的東西,尤其是TreeView樹控件,用來處理多層級的樹形結構數據非常有用。由于在Access中沒有類似的控件,沒有其它代替解決辦法。甚至不像ListView可以用列表框或者子窗體代替,Toolbar可以用按鈕、菜單代替。


但自從Win7開始,不論是Win8、Win10,MSCOMCTL.OCX通用控件庫中的控件就經常出現兼容性問題。即開發環境下的版本號和使用環境下的版本號,哪怕只有很小的差別,像6.1.9834和6.1.9818這樣,都會出現異常不能使用。


我們這里仍然以TreeView控件為例,不包括本身控件庫安裝有問題不能使用的情況,一般可能會遇到的兼容性問題有會以下兩類:



  • 不能響應鍵盤、鼠標事件。可以正常加載數據到樹控件,但不論是鼠標還是鍵盤,均無法觸發相應的事件,比如在NodeClick事件中寫了相應處理代碼,但點擊之后沒有任何反應。
  • 鍵盤、鼠標事件一觸發就報錯。點擊鼠標、按鍵,甚至鼠標在樹控件上移動,事件可以響應,但一觸發就報錯,導致不能正常使用。

這些問題發生的頻率非常高!尤其是當一些在實際中已經在用的Access程序來說,遇到實在讓人火冒三丈,因為業務部門等著馬上要用呢!這是在坑爹呢還是在坑爹呢!


對于這個問題有什么解決辦法呢?總結下來不外乎下面幾種:



  • 修改控件庫。這個控件庫是微軟的,第一優先是希望微軟能在更新系統時解決掉該問題,但從Win7到Win10,該問題仍然頑固地存在,看來微軟是指望不上了。而我們不可能去修改控件庫,甚至通過一些破解手段修改了,但會導致簽名失效,還是不便于使用。
  • 不使用樹控件。但正如本文一開頭說的那樣,有些多層數據的展示和處理,在用過了樹控件之后,現在要讓人不用,實在難受。就像習慣了電氣化的現代人,突然沒電了,要點油燈、蠟燭照明,這!這!這!這日子不過了!
  • 使用其它第三方樹控件。其它第三方樹控件的問題在于,有可能是要額外付費的。即使找到免費的了,由于屬性方法事件等接口不同,還需要重新編寫程序。另外使用第三方控件需要安裝,而一些規范化的企業里面,是禁止用戶自行安裝軟件的。

看到這里你是不是感到絕望了?是不是感覺自己被掏空了?感覺不會再愛了?

這么想地話,你還是太年輕,圖樣圖森破!

世上無難事,只怕有些人!要相信希望總會有的,奇跡是會出現的,在那個迷茫的午夜,上帝向你走來,賜給了你一道光!

上帝說:解決這個問題,需要用到這一招如來神掌,我現在就將如來神掌的秘籍傳授給你!


------------------------------------------如來神掌秘籍分割線--------------------------------------

1. Ctrl+G打開立即窗口,輸入以下代碼并回車,將窗體另存為文本文件。

[code]SaveAsText acForm, "Form1", CurrentProject.Path & "\Form1.txt"[/code]

注意不要直接把代碼原樣抄去就用,

要把Form1改成你實際的窗體名稱!

要把Form1改成你實際的窗體名稱!

要把Form1改成你實際的窗體名稱!

重要的事情說三遍。


2. 用記事本打開剛才生成的文件文件 Form1.txt,找到樹控件所在的位置(如果內容比較多,可以搜索樹控件名稱)。

680


3. 將從 OleData = Begin 這一行開始,直到 End 結束的OleData部分全部選中:

680


4. 將上面選中的部分替換成附件中的內容(由于發帖限制不能直接放數據):兼容性好的TreeView控件OleData.zip


5. 回到Access立即窗口,再次輸入以下代碼并回車,將文本文件加載為窗體:

[code]LoadFromText acForm, "Form1", CurrentProject.Path & "\Form1.txt"[/code]

打完收工。


重新打開有樹控件的窗體,你會發現惹人厭的樹控件不能正常使用的問題沒有了!換臺電腦,也不再出了!


鄭重聲明:

該方法本公子親測有效,也用來救了幾次火。但由于測試樣本有限,加上本公子也還沒有完全弄懂原理,所以不保證百分之百有效!因此這里只當作一個偏方分享出來給大家,僅供參考。





admin在 2017/03/23 9:18:39 回復-------------------



yfy629在 2017/03/23 9:30:57 回復-------------------
如煙神武!!!

roych在 2017/03/23 9:41:00 回復-------------------
紅塵威武霸氣外露啊!

真主在 2017/03/27 10:49:18 回復-------------------
謝謝,謝謝!正在愁

tmtony在 2017/03/28 15:01:58 回復-------------------
saveastext 里面藏著 access 很多秘密!

accben在 2017/03/30 10:10:32 回復-------------------
經常遇到,試試效果看看。
謝謝紅塵大師。

YXH_YXH在 2017/07/25 16:02:11 回復-------------------
好多謝分享!!!!!!!!!

(微軟Activex控件-相關文章技巧鏈接):
三小時掌握TREEVIEW控件
[經驗技巧]Access中使用微軟Treeview樹形控件的煩惱
Access的Treeview在 MS10-036 更新后無法使用的問題
Access Treeview 樹控件MSCOMCTL.OCX 在更新 KB 2687323后無法正
windows 7或其它windows 64位系統里Treeview注冊的問題(mscomctl
Access中treeview不能使用或提示沒有版權(License)的解決辦法
Access中使用TreeView 樹形控件 詳細講解(Excel Word Office都可
Access2010使用Treeview出現問題的解決辦法(適合32位及64位)
分享
北京十一选五基本走势