http://blog.csdn.net/xcntime/article/details/21706779
在Access VBA编写的程序中,如果可以在运行时动态创建控件无疑是非常有用的,因为有些控件是无法预先得知的,这样就更必须在运行时动态创建然后设置相应控件属性。在vb,excel当中,使用Control的add方法可以实现,如下:
然而,在access当中,当我们调用Controls.Add时,却发现access的vba文档中不存在此方法,在文档中查询了下,发现等价的方法是
CreateControl(),下面是其文档说明:
http://support.microsoft.com/kb/147134/zh-cn
症状
原因
解决方案
为了在运行时创建一个 OLE 控件,您必须首先创建"模板"窗体,其中包含您的过程需要在运行时创建的所有 OLE 控件。
然后,该过程必须设置为"模板"窗体上的 OLE 控件的 OLEData 属性的新的自定义控件的 OLEData 属性。
创建计划过程在运行时创建的所有 OLE 控件的窗体。 该过程必须设置为模板窗体上的适当控件的 OLEData 属性的新的 OLE 控件的 OLEData 属性。 下面的步骤演示如何使用 Microsoft Access 中包含日历控件执行此操作。
本文假定您熟悉 Visual Basic for Applications 和创建 Microsoft Access 应用程序使用编程与 Microsoft Access 提供的工具。 Visual Basic for Applications 有关的详细信息,请参阅"Microsoft Access 与构建应用程序"手册的版本。
创建计划过程在运行时创建的所有 OLE 控件的窗体。 该过程必须设置为模板窗体上的适当控件的 OLEData 属性的新的 OLE 控件的 OLEData 属性。 下面的步骤演示如何使用 Microsoft Access 中包含日历控件执行此操作。
本文假定您熟悉 Visual Basic for Applications 和创建 Microsoft Access 应用程序使用编程与 Microsoft Access 提供的工具。 Visual Basic for Applications 有关的详细信息,请参阅"Microsoft Access 与构建应用程序"手册的版本。
- 打开示例数据库 Northwind.mdb。
- 创建新的空白表单模板的名称。
- 插入一个日历控件并将其命名为日历。
- 创建一个模块,并在声明部分中键入下面一行,如果尚不存在:
显式的选项
- 键入以下过程:
Sub CreateCalendar() Dim frm As Form Dim ctl As Control DoCmd.OpenForm "Template", acDesign , , , , acHidden Set frm = CreateForm() Set ctl = CreateControl(frm.Name, acCustomControl, acDetail) ctl.OLEData = Forms!Template!Calendar.OLEData DoCmd.Restore DoCmd.Close acForm, "Template" End Sub
- 若要测试此函数,请在调试窗口中,键入下面一行,然后按 enter 键:
CreateCalendar请注意一个日历控件创建一个新窗体。
更多信息
重现问题的步骤
- 打开示例数据库 Northwind.mdb。
- 创建一个模块,并在声明部分中键入下面一行,如果尚不存在:
显式的选项
- 键入以下过程:
Sub CreateCalendar() Dim frm As Form Dim ctl As Control Set frm = CreateForm() Set ctl = CreateControl(frm.Name, acCustomControl, acDetail) ctl.Class = "MSACAL.MSACALCtrl.7" ctl.OLEClass = "Calendar Control" End Sub
- 若要测试此函数,请在调试窗口中,键入下面一行,然后按 enter 键:
CreateCalendar请注意,即使该过程设置的类和 OLEClass 属性空 OLE 控件容器与创建一个新窗体。
参考
有关 CreateControl() 函数的详细信息, CreateControl 函数,用于搜索帮助的索引,或让 Microsoft Access 97 Office 助手。
属性
文章编号: 147134 - 最后修改: 2013年9月30日 - 修订: 3.3
关键字: | kbnosurvey kbarchive kbmt kbprb kbprogramming KB147134 KbMtzh |