Access中通过VBA程序代码在Access窗体上动态创建ActiveX控件-高级技巧
- 2017-08-31 15:06:00
- zstmtony 原创
- 7088
Access中通过VBA程序代码在Access窗体上动态创建ActiveX控件
我们知道在Access中可以通过 Createcontrol 来动态在窗体上创建控件,但大家有否发现,创建普通的Access控件是可以的
但是创建Activex或其它Customcontrol是不行。不管你如何创建,这个控件总是无法生效或激活的。
CreateControl 创建 AcitveX 控件 是通过 (acCustomControl 参数),虽然命令是执行成功了,但它仅仅是创建一个空的容器(empty container)
Activex控件的属性 方法 和事件都没有激活。这是为什么呢?
最终几天不断的研究和分析,发现原来是这个Activex的OleData未填充导致的。
有2种方法来实现
1.将每种Activex控件的OleData保存在一个模板表中,在需要的时间将这些OleData内容赋给刚创建的Activex控件
2.从其它窗体或本控件同类型的Activex控件中复制OleData
2种方法都需要 分别 对如 Treeview imagelist listview等这些Activex控件分别处理
以下是使用代码动态创建Activex控件Treeview树控件的方法:
Dim frm As Form, ctl As ControlSet Docmd.Openform "我的窗体",acDesign ,,,,acHidden '隐藏打开窗体到设计视图 frm = Forms("我的窗体") Set ctl = CreateControl(frm.Name, acCustomControl, acDetail, , , 100, 100, 200, 200) ctl.OleData = frm("已存在的树控件名").OleData '已存在的树控件名 是已存在当前窗体上或其它窗体上树控件
同样创建网页浏览器控件也可以通过类似的方法
Dim ctlNew As Access.Control '******************************************** ' 在主体节添加浏览器控件 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
此知识点相关Access资料
Access VBA教程:OLEData属性
本主题中的部分内容可能不适用于某些语言。
使用 OLEData属性可以将未绑定对象框中的数据复制到其他未绑定对象框,或者将ActiveX 控件中的数据复制到其他 ActiveX 控件。
设置
controlname.OLEData
OLEData属性使用以下设置:
设置 | 说明 |
---|---|
ControlName | 必需。表示未绑定对象框控件的名称。 |
OLEData | 必需。表示未绑定对象框或 ActiveX 控件所包含的数据。 |
OLEData属性仅在使用 Visual Basic 时才可用。对于 ActiveX 控件,只有在“设计”视图中才能将其 OLEData属性设为其他 ActiveX 控件的 OLEData属性。
说明
使用该属性可以在未绑定对象框中显示其他未绑定对象框中的数据。
如果将 ActiveX 控件的 OLEData属性设为其他 ActiveX 控件的 OLEData属性,则第一个 ActiveX 控件将成为第二个 ActiveX 控件的另一个实例。例如,下列对属性进行赋值的代码将 TreeView 控件改为 Calendar 控件:
Me!MyTreeViewControl.OLEData = Me!MyCalendarControl.OLEData
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |