Access使用VBA代码自动创建控件的方法及示例
- 2017-08-28 16:58:00
- zstmtony 原创
- 9984
能否通过程序代码来自动创建Access窗体上的控件呢,理论上是可行的。Access本身就提供了CreateControl这个方法
可以让您通过VBA代码来自动创建控件,并指定控件的类型及相关属性
Application.CreateControl方法
访问开发人员参考 |
句法
表达式 .CreateControl(FormName,ControlType,Section,Parent,ColumnName,Left,Top,Width,Height)
表达式 表示Application对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
窗体名称 | 需要 | 串 | 要在其上创建控件的打开的表单或报表的名称。 |
ControlType | 需要 | AcControlType | 一个AcControlType 常量表示要创建的控件的类型。 |
部分 | 可选的 | AcSection | 一个AcSection常数,用于标识将包含新控件的部分。 |
亲 | 可选的 | 变种 | 附件控件的父级控件的名称。对于没有父控件的控件,对此参数使用零长度字符串,或者省略它。 |
的ColumnName | 可选的 | 变种 | 控制将绑定的字段的名称,如果它是一个数据绑定的控件。 |
左,上 | 可选的 | 变种 | 控制左上角的坐标为缇。 |
宽度,高度 | 可选的 | 变种 | 指示控件的宽度和高度的数字表达式,以缇为单位。 |
回报价值
控制
备注
您可以使用自定义向导中的Create Control和CreateReportControl方法在窗体或报表上创建控件。两个方法都返回一个Control 对象。
您可以分别使用CreateControl和CreateReportControl方法在表单设计视图或报表设计视图中。
您可以使用父参数来标识主控件和从属控件之间的关系。例如,如果文本框具有附加的标签,则文本框是主(或父)控件,标签是从属(或子)控件。创建标签控件时,将其父参数设置为标识父控件名称的字符串。创建文本框时,将其父参数设置为零长度字符串。
您还可以在创建复选框,选项按钮或切换按钮时设置父参数。选项组是其包含的任何复选框,选项按钮或切换按钮的父控件。可以有父控件的唯一控件是标签,复选框,选项按钮或切换按钮。所有这些控件也可以独立创建,无需父控件。
根据您正在创建的控件的类型设置columnname参数,以及是否绑定到表中的字段。可能绑定到字段的控件包括文本框,列表框,组合框,选项组和绑定对象框架。此外,切换按钮,选项按钮和复选框控件可能会绑定到一个字段,如果它们不包含在选项组中。
如果指定columnname参数的字段名称,则创建绑定到该字段的控件。然后,所有控件的属性将自动设置为任何相应的字段属性的设置。例如,控件的ValidationRule 属性的值将与该字段的该属性的值相同。
注意 |
---|
如果您的向导在新的或现有的表单或报表上创建控件,则必须首先在“设计”视图中打开表单或报表。 |
要从表单或报表中删除控件,请使用DeleteControl和DeleteReportControl 语句。
例
以下示例首先基于Orders表创建一个新表单。然后它使用CreateControl方法在表单上创建一个文本框控件和附加的标签控件。
Visual Basic应用程序 |
---|
Sub NewControls() Dim frm As Form Dim ctlLabel As Control, ctlText As Control Dim intDataX As Integer, intDataY As Integer Dim intLabelX As Integer, intLabelY As Integer ' Create new form with Orders table as its record source. Set frm = CreateForm frm.RecordSource = "Orders" ' Set positioning values for new controls. intLabelX = 100 intLabelY = 100 intDataX = 1000 intDataY = 100 ' Create unbound default-size text box in detail section. Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _ intDataX, intDataY) ' Create child label control for text box. Set ctlLabel = CreateControl(frm.Name, acLabel, , _ ctlText.Name, "NewLabel", intLabelX, intLabelY) ' Restore form. DoCmd.Restore End Sub |
- 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 |