Access中通過VBA程序代碼在Access窗體上動態(tài)創(chuàng)建ActiveX控件-高級技巧
- 2017-08-31 15:06:00
- zstmtony 原創(chuàng)
- 7319
Access中通過VBA程序代碼在Access窗體上動態(tài)創(chuàng)建ActiveX控件
我們知道在Access中可以通過 Createcontrol 來動態(tài)在窗體上創(chuàng)建控件,但大家有否發(fā)現(xiàn),創(chuàng)建普通的Access控件是可以的
但是創(chuàng)建Activex或其它Customcontrol是不行。不管你如何創(chuàng)建,這個控件總是無法生效或激活的。
CreateControl 創(chuàng)建 AcitveX 控件 是通過 (acCustomControl 參數(shù)),雖然命令是執(zhí)行成功了,但它僅僅是創(chuàng)建一個空的容器(empty container)
Activex控件的屬性 方法 和事件都沒有激活。這是為什么呢?
最終幾天不斷的研究和分析,發(fā)現(xiàn)原來是這個Activex的OleData未填充導(dǎo)致的。
有2種方法來實現(xiàn)
1.將每種Activex控件的OleData保存在一個模板表中,在需要的時間將這些OleData內(nèi)容賦給剛創(chuàng)建的Activex控件
2.從其它窗體或本控件同類型的Activex控件中復(fù)制OleData
2種方法都需要 分別 對如 Treeview imagelist listview等這些Activex控件分別處理
以下是使用代碼動態(tài)創(chuàng)建Activex控件Treeview樹控件的方法:
Dim frm As Form, ctl As ControlSet Docmd.Openform "我的窗體",acDesign ,,,,acHidden '隱藏打開窗體到設(shè)計視圖 frm = Forms("我的窗體") Set ctl = CreateControl(frm.Name, acCustomControl, acDetail, , , 100, 100, 200, 200) ctl.OleData = frm("已存在的樹控件名").OleData '已存在的樹控件名 是已存在當(dāng)前窗體上或其它窗體上樹控件
同樣創(chuàng)建網(wǎng)頁瀏覽器控件也可以通過類似的方法
Dim ctlNew As Access.Control '******************************************** ' 在主體節(jié)添加瀏覽器控件 web browser control ' a.) OLE Class: Microsoft Web Browser ' b.) Class: Shell.Explorer.2 '******************************************** Set ctlNew = CreateControl(frmNew.Name, acCustomControl, acDetail) With ctlNew .OLEClass = "Microsoft Web Browser" .Class = "Shell.Explorer.2" .Verb = 0 .Visible = True .OleData = forms("另一個窗體").controls("WebBrowser2").OleData End With
此知識點相關(guān)Access資料
Access VBA教程:OLEData屬性
本主題中的部分內(nèi)容可能不適用于某些語言。
使用 OLEData屬性可以將未綁定對象框中的數(shù)據(jù)復(fù)制到其他未綁定對象框,或者將ActiveX 控件中的數(shù)據(jù)復(fù)制到其他 ActiveX 控件。
設(shè)置
controlname.OLEData
OLEData屬性使用以下設(shè)置:
設(shè)置 | 說明 |
---|---|
ControlName | 必需。表示未綁定對象框控件的名稱。 |
OLEData | 必需。表示未綁定對象框或 ActiveX 控件所包含的數(shù)據(jù)。 |
OLEData屬性僅在使用 Visual Basic 時才可用。對于 ActiveX 控件,只有在“設(shè)計”視圖中才能將其 OLEData屬性設(shè)為其他 ActiveX 控件的 OLEData屬性。
說明
使用該屬性可以在未綁定對象框中顯示其他未綁定對象框中的數(shù)據(jù)。
如果將 ActiveX 控件的 OLEData屬性設(shè)為其他 ActiveX 控件的 OLEData屬性,則第一個 ActiveX 控件將成為第二個 ActiveX 控件的另一個實例。例如,下列對屬性進行賦值的代碼將 TreeView 控件改為 Calendar 控件:
Me!MyTreeViewControl.OLEData = Me!MyCalendarControl.OLEData
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平臺
- 將( .accdb) 文件格式數(shù)據(jù)庫轉(zhuǎn)換為早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫文件格式(.mdb)轉(zhuǎn)換為 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫引擎和訪問連接引擎以阻止對遠程數(shù)據(jù)庫的訪問(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常注冊的解決辦法(regsvr32注冊時卡?。?/a>
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下出現(xiàn)橫向滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節(jié)點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列表等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)并解析返回的XML
- 早期PB程序連接Sqlserver出現(xiàn)錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一個MMC控制臺,或者用后來的MMC版
- sql server連接不了的解決辦法
- localhost與127.0.0.1區(qū)別
- Roych的淺談數(shù)據(jù)庫開發(fā)系列(Sql Server)
- sqlserver 自動備份對備份目錄沒有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
聯(lián)系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |