代码重用主要有两种形式,即二进制代码重用与源代码重用。前者是通过创建和使用对象来实现的;后者,顾名思义,是通过继承实现的,后者在C++语言中被广泛使用。由于Visual Basic不支持继承,所以在VB中的代码重用主要是指二进制代码重用,并且VB算得上是二进制代码重用的先驱。它的基本思路是:首先将待重用的代码和数据编译为二进制文件,称为ActiveX服务器部件,然后在客户应用程序里创建部件中类的对象来调用该部件。在VB中最为人们所熟悉的控件就是典型的二进制代码重用的例子,每个控件都是一个ActiveX部件,在向窗体中添加一个控件的同时就创建了该控件类的一个新实例,然后通过调用该控件的属性、方法和事件就重用了该控件中的代码。
Word 97本身就是一个庞大的代码部件,也就是说,Word 97中的整个对象库是对外开放的,它允许其他应用程序对其进行编程。换句话说,Word 97中的对象能被其他应用程序所调用。而“艺术字”正是Word 97中的一种对象,因此可以方便地在VB中调用它。
要使用“艺术字”,必须先把Word 97的对象库加入到程序中,然后创建一个对象变量来保持对Word应用程序对象的引用,可以用两种方法创建对Word应用程序对象的引用,一种方法是直接声明一个Word应用程序的对象变量,例如:
Dim w As New Word.Application
这种方法称为前期绑定,它速度较快;另一种方法是声明一个对象变量w,然后把用CreateObject函数创建出的Word应用程序对象赋给w,例如:
Dim w As Object
Set w=CreateObject("Word.Application")
这种方法称为后期绑定,它速度较慢。在创建了Word应用程序对象后,就可以以代码的方式像在Word中进行具体操作那样创建新文档,并在文档中加入“艺术字”。在创建好“艺术字”之后,用剪贴板将其传给窗体。在创建Word应用程序对象时,VB会在后台自动打开Word,因此,在程序结束时,应该先关闭Word,其代码如下:
w.Quit wdDoNotSaveChanges
下面用一个具体的项目实例帮你轻松学习如何在VB中使用Word对象。
(1)启动Microsoft Visual Basic 5.0,选择“标准EXE”,创建一个新项目;
(2)选择“项目”菜单中的“引用”选项,显示“引用”对话框,选中"Microsoft Word 8.0 Object Library"和"Microsoft Office 8.0 Object Library"两项,单击“确定”按钮(见图1);
(3)将下列代码加入到Form1的“通用”|“声明”选项中:
Dim w As New Word.Application
(4)将下列代码加入到Form1的Load事件中:
Private Sub Form_Load()
w.Documents.Add.Select
w.ActiveDocument.Shapes.AddTextEffect(0,"艺术字","隶书",48#,-1,0,183.75,70.5).Select
End Sub
这里显示的字样是隶书的“艺术字”三个字,你可以根据自己的喜好来改变字体(如宋体、楷体等)以及改变字样;
(5)将下列代码加入到Form1的Click事件中:
Private Sub Form_Click()
w.Selection.ShapeRange.TextEffect.PresetTextEffect = Int(Rnd(1) * 30)
w.Selection.ShapeRange.TextEffect.FontName = "隶书"
w.Selection.Copy
Picture = Clipboard.GetData()
End Sub
(6)将下列代码加入到Form1的Unload事件中:
Private Sub Form_Unload(Cancel As Integer)
w.Quit wdDoNotSaveChanges
Set w = Nothing
End Sub
(7)在窗体上放置一个按钮,其Caption属性为"Exit",并在它的Click事件中处理退出:
Private Sub Command1_Click()
End
End Sub
(8)运行程序后,当鼠标在窗体上单击时,会随机地显示出一种“艺术字”字型(Word中共有30种内建“艺术字”字型),下图分别给出了隶书与宋体两种不同字体的字样为“艺术字”的几种情形。
同样,由这个实例可以举一反三,即我们也可以在VB中使用Excel的图表、PowerPoint的幻灯片,因为Office 97中的产品都是代码部件,这些产品中的对象库都是可以被其他应用程序调用的,所以只要了解这些对象的外部接口(属性、方法和事件),就可以方便地调用这些对象了。
文章来源于领测软件测试网 https://www.ltesting.net/