预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VB封装DLL实例讲解(二) 上文中我们已经就DLL的基本概念,以及如何将VBA代码封装为DLL,如何引用该生成的DLL动态链接库,进行了初步的讲解,我想大家对于VB封装DLL应该有了一个初步的了解。 下面主要就DLL如何实现对ACCESS对象进行封装方法进行探讨。 一、如何在VB中实现对ACCESS对象编程 (一)在VB中引用ACCESS对象类库 我们要通过编译DLL来实现对ACCESS对象的封装,首先必须在VB中引用ACCESS对象类库,这样我们就可以在VB中,实现对ACCESS应用程序中的对象进行编程。 打开VB编辑窗口,点菜单【工程】-【引用】,打开【引用对话框】,点选“MicrosoftAccess11.0ObjectLibrary”完成对当前版本ACCESS应用程序对象的引用。(实例演示版本为ACCESS2003) 库文件所在路径 1钩选ACCESS对象库 2点击确定 对ACCESS对象库的引用很关键,否则我们无法实现对ACCESS对象的编程 (二)了解ACCESS对象模型 在VB中要对ACCESS对象进行编程,还必需对ACCESS所提供的各项对象有一定了解,因为VB就是通过ACCESS对象的方法与属性,来完成各项操作与设置,下图为ACCESS2003的对象部分模型图例。 上图为ACCESS2003对象模型,因为篇幅的问题,文中只显示模型中部分对象,要了解全部对象模型,请大家参阅帮助。 (三)VB编程中ACCESSVBA与VB对象表述区别 1、ACCESSVBA与VB的顶层对象都为Application,但在编程中ACCESSVBA顶层对象表述为:Application,而在VB编程中顶层对象用简写:App表述(到VB.NET又改回了Application)。 例程:在VB编程中获得VB及ACCESSVBA获取当前路径实例: '在VB中获得当前路径: App.Path '在VB中获得ACCESS的当前路径: Application.CurrentProject.Path 在office各应用程序之间调用各组件时,通常在对象前加上库名,如:Access.Application来表述,但因为VB与ACCESS顶层对象原本表述就存在区别,在VB中可以直接用Application表述ACCESS应用程序对象,并不会产生冲突的问题。 2、ACCESSVBA和VB中部分预定义类对象(如:窗体、控件等)表述基本相同,以“标签控件”为例,VB与ACCESSVBA均为Label,在VB编程中为了与ACCESS预定义类对象加以区别,ACCESS标签对象通常用ACCESS.Label表述。 例程:在VB编程中定义VB及ACCESS标签控件对象实例: '在VB中定义VB标签对象: Dimm_LabelAsLabel '在VB中定义ACCESS标签对象: Dimm_LabelAsAccess.Label 在进行DLL编程时,特别需注意对象表述区别的问题,否则无法编译或是编译后在ACCESS调用中报错。 (四)VB编程中关于ACCESSVBA专属常量 ACCESSVBA专属常量以“ac”开头,如:控件类(AcControlType)中的文本控件常量为acTextBox,这些常量不一定能被VB所识别,解决办法通常不使用“常量名”,而直接使用“常量值”,或以输入参数方式传递的方法来解决。 例程:实现隐藏所有文本控件。acTextBox常量值为109。 DimctlAsAccess.Control'申明ACCESS控件对象 DimfrmCltAsAccess.Controls'申明ACCESS控件集合 '遍历所有ACCESS控件集合,如为文本控件,则不显示该控件 ForEachctlInfrmClt.Controls '文本控件类常量值为109,以常量值替代acTextBox常量名 Ifctl.ControlType=109Thenctl.Visible=False Next 你可以通过帮助查阅ACCESS专属常量值,也可以在ACCESSVBA中通过程序方式获取,如:在立即窗口输入:?acTextBox回车,就可以acTextBox常量值为:109。 二、DLL封装ACCESS对象实例演示 (一)ACCESS的MDB实例 MDB实例演示获得ACCESS版本信息,并在标签Label0中显示(见下图),具体参看实例中frmVer6窗体中的代码,及类模块ClsVeresion中代码。 mdb实例中frmVer1-frmVer6各窗体中具体演示了,代码按DLL封装需要整理的思路。 例程:frmVer6窗体加载事件代码 PrivateSubForm_Load() '申明自定义类的实例