Visual Basic COM基础讲座之属性(转)
属性操作很像公共变量,但属性还有更多的控制。 常用属性通常包括"Get(获取)"和"Let(设置)"两种。这两项操作能规定一个主要属性,就像下面的代码片段: Private intAge As Integer Public Property Get Age() As Integer Age = intAge End Property Public Property Let Age(ByVal vNewValue As Integer) intAge = vNewValue End Property 上述代码的工作方式极像Age变量的操作。当像下面语句操作变量时, MyDog.Age = 4 就好比运行Let属性,并将4赋给vNewVa
Visual Basic COM基础讲座之类的建立之一(转)
在本节中,我们来实践一下。首先创建一个COM对象,然后使用它,最后再想法改进。 首先进行下面两步: 运行Visual Basic;选择 "Standard EXE"工程类型;由于COM对象是基于类的,而类实际上是程序包,就像模块中的代码一样。所以: 选择"Project"->"Add Class Module";当相应的对话框出现后,选择"'Class Module",然后单击"Open"按钮。 这样,在桌面上显示一个表单,以及包含在工程Project1中的Class1。 下面再将空的类的类名更改: 在类的属性窗口
VB COM编程基础之子过程函数和参数(转)
前面已经接触到类的变量、属性以及枚举,但我们怎样才能更好的利用它们呢? 显然,子过程就是其中的一种方式,它几乎出现所有的Visual Basic程序中,所以这里来举例说明。 在CDog类中添加下列代码: Public Sub Bark() MsgBox "Woof! Woof!" End Sub 这里的子过程是最常见的,我们可以简单地使用MyDog.Bark来调用它。 下面来试一试: 将表单Form1的Command按钮的代码改成: Dim MyDog As CDog Set MyDog = New CDog MyDog.Name = "Billy" MyDog.Bark
Visual Basic COM基础之更多属性(转)
有时候,为了更好地处理类往往需更多的属性。例如,假如你有四种不同的客户群:集团、较大、较小和新的客户类型,或者一个用于搜索的类中有三种不同的搜索方式:软盘、硬盘和网络。那么,能不能最好从选项列表中选择一个,而不是用不能理解的数字或文本来设置相关属性? 我想,答案是肯定的。因为这种处理就称为"枚举"。 打开上一节的工程,让我们添加一些代码。 在CDog类中添加下列代码: Public Enum CoatType BigAndShaggy = 1 ShortCrewCut = 2 PoodleStyleAfro = 3 Unknow
VB COM基础讲座之可重用性(转)
还记得我们是怎么将一个类添加到标准的Visual Basic工程中的? 是的,一流的COM体系的最大特点是其代码的可重用性。 换句话说,如果用Visual Basic创建一个用于财务管理的类,那么该类不仅可以通过其他程序来访问,而且还可用于其他合作者的应用程序。比如,一张Excel电子数据表可能就需要这样的数据,或者一个C++程序员可能需要获取他人最新工程的一些信息,等等。 但是,当我们将所需要的类添加到标准的Visual Basic应用程序中,或是再编译成最终的EXE程序时,其他人仍然不能在程序内部处理类或属性。 解决这个问题
VB COM基础讲座之创建第一个COM对象(转)
让我们直接来开始创建第一个真正的COM对象,它将被用于那些ActiveX程序中。 具体步骤如下: 启动Visual Basic; 我们将看到一个"New Project"对话框,其中有几个与ActiveX相关的选项图标。下面来解释一下: ActiveX DLL——创建一个包含类的.DLL程序,这是我们将要采用的选项; ActiveX EXE——创建一个包含类的.EXE程序,以后将讨论这个类型; ActiveX Control——添加一个工程,允许自己创建用于toolbox中的控件。这里不去讨论它。 ActiveX Document EXE——创建一个基于Web页的.EXE程序,
VB COM基础讲座之添加属性和方法(转)
下面,我们添加一个属性来让用户获取CustomerID字段的值,其相应的示例代码如下: Public Property Get CustomerID() As String CustomerID = rs("CustomerID") End Property Public Property Let CustomerID(NewValue As String) rs("CustomerID") = NewValue End Property 显然,该属性的Get操作只是简单地返回"CustomerID"字段的值,相应地,Let操作是将"CustomerID"字段设置一个新值。 换句话说,属性中有两个部分:"getting"和"
VB COM基础讲座之类的测试之二(转)
假如愿意,仍然可以按F9高亮显示"Test.CustomerID =" 这条语句,然后按F8单步运行来查看其工作情况。 至此,我们已经成功地创建并测试一个简单的基于数据库的类。但是,还没有对customerID的字符串长度作测试,如果其长度超过5个字符,看看会发生什么? 下一步,我们将扩充并改进这个数据库类。 首先添加类的几个特征:其他的属性、一些方法甚至一两个事件。 其相应的代码如下: Dim WithEvents rs As Recordset Public Event RecordsetMove() Private Sub Class_Initialize() Set rs = New Rec
VB COM基础讲座之类的测试之一(转)
现在就来测试前面创建的类。 按F5运行程序;在弹出的属性对话框中,选中"Wait for Components to Start"(启动工程时等待创建部件),然后按[OK]按钮; 这时,类就会被激活,其他程序就可使用它的功能。 再次运行Visual Basic另一个实例; 创建一个新的"Standard EXE"工程; 选择"'Project"->"References"菜单; 浏览对话框中可引用的列表项,可以发现一些额外的组件。 选中"Northwind"列表项; Northwind就是前面创建的ActiveX工程。
Visual Basic COM基础讲座之兼容性(转)
在本教程第二部分的最后,我们遇到一个小问题,但确切地说,那实际上是一个大问题。如果有时间的话,这个问题应该值得我们花大精力去研究。 还记得我们是怎样遇到那个问题吗?当时,我们先编译ActiveX DLL,然后编译使用该DLL的测试程序。接着,我们重新编译DLL,那是因为假设DLL中的内容需要修改。然而,再运行测试程序时,却出现错误! 虽然,我们可以重新编译测试程序,以便该程序能正确运行。但是,如果这里不是VB程序,而是Excel数据表或是C++统计程序在使用该DLL,那么是不是每次对ActiveX DLL进行小小的修改后都要重新编
VB COM基础讲座之全面测试(转)
这一次,我们不用Visual Basic来测试前面的程序,而是先来编译: 选择"File"->"Make Project1.exe"菜单; 择要保存的文件夹,单击[OK]按钮; 退出Visual Basic; 运行刚才编译过的.EXE文件; 当表单出现时,试试打开一个customer,然后对其修改并单击[OK]按钮。再打开刚才的customer,看看其资料是否被修改?结果应该是这样,因为ActiveX DLL会自动将结果保存在数据库中。 现在,让我们静下来想一想刚才做过的事件。我们只用了几条简单的语句就建立了一个自己的数据库应用程序,虽然
VB COM基础讲座之创建测试程序(转)
这里我们直接创建一个应用程序来测试一下前面生成的ActiveX EXE文件监视组件: 新建一个"Standard EXE"工程; 下面需要添加一个引用到我们的新的文件组件中去,然后添加少量的代码作尝试: 选择"Project"->"References"菜单; 选中"File"组件选项,然后单击[OK]按钮; 在表单的通用声明部分添加下列代码: Dim WithEvents MyFileObject As FileCheck 从"Object"下拉列表中选择"MyFileObject"; 确保插入符在FileFound事件程序中
VB COM基础讲座之编译的实例选项(转)
在测试文件组件之前,我们必须先编译它。但在进行这项工作之前,让我们先来浏览一下Visual Basic所给出来的一些额外选项。 在打开FileCheck代码窗口的同时,我们来看看它的属性窗口。 属性有Name、DataBindingBehaviour(用于将类和数据源相"绑定")、可持久性(用于控件中,允许保存某个类的属性)以及实例。 当类名属性修改后,我们或许不必担心前三项的属性。那么什么是实例呢? 实例(Instancing)属性决定自己的类对于使用ActiveX组件的应用程序来说是否可见。若可见,则在任何时候可运行不止一个的实例。
VB COM基础讲座之发布组件(转)
既然我们构造了这世界上最有魅力的ActiveX组件,就应该把它们发布出去。那么我们该怎么做呢? 幸运的是,发布COM组件是一件非常容易的事。 我们只要使用Package & Deployment(打包和展开)向导就可对计算机上的常规Visual Basic工程进行相应的操作。同样,该向导还适用于ActiveX工程。 但是,发布时只有ActiveX组件本身自己吗?如果不是,那么为何又要运行向导,单独地为自己的ActiveX工程创建一个安装程序?或是连同使用它的应用程序一起发布?对于常规工程来说,简单地创建一个安装,其组件就会自动被打包。 唔,可能
Visual Basic变态用法之函数指针(转)
一、函数指针 AddressOf得到一个VB内部的函数指针,我们可以将这个函数指针传递给需要回调这个函数的API,它的作用就是让外部的程序可以调用VB内部的函数。 但是VB里函数指针的应用,远不象C里应用那么广泛,因为VB文档里仅介绍了如何将函数指针传递给API以实现回调,并没指出函数指针诸多神奇的功能,因为VB是不鼓励使用指针的,函数指针也不例外。 首先让我们对函数指针的使用方式来分个类。 1、回调。这是最基本也是最重要的功能。比如VB文档里介绍过的子类派生技术,它的核心就是两个API:SetWindowLong和CallWin
VB“超频”秘籍之隐藏的Variant变量(转)
火眼识破隐藏的Variant变量 如果没有用As语句声明变量,默认类型就是Variants,比如: Dim name ' this is a variant 或者,当前模块下没有声明Option Explicit语句时,任何变量都是Variants类型。 许多开发者,特别是那些先前是C程序员的人,都会深信下面的语句将声明2个Interger类型变量: Dim x, y As Integer 而实际上,x被声明为了variant类型。由于variant类型变量要比Integer类型慢很多,所以要特别注意这种情况。正确的一行声明方法是: Dim x As Integer, y As Integer GoSub在编译程序中速度变慢 编译
Visual Basic6.0网络编程的五大散手之二(转)
设计E-mail的接收部分 在VB 6菜单上点击"工程/部件...",弹出"部件"对话框,在对话框的控件卡中选中Microsoft MAPI Controls 6.0控件,点击"确定"按钮后,工具箱上增加了MAPIMessage和MAPISession两个图标。 在Form上加入一个MAPIMessage控件,取名为MAPIMessage1;再加入一个MAPISession控件,取名为MAPISession1;再加入三个TextBox控件,分别取名为Subject、Content和Indexno, 将它们的Caption分别改为邮件标题、邮件内容和邮件索引号;在TextBox前各加入一个Label控件,将Caption分别改为标
Visual Basic6.0网络编程的五大散手之一(转)
Visual Basic 6.0(以下简称VB 6)以其强大的功能为广大软件开发人员所喜爱,被用来开发各种应用程序。随着Internet的迅猛发展,VB6在网络方面的应用开发也越来越多。本文介绍笔者在实际编程开发中总结的5个技巧,希望能为进行网络开发的朋友们提供一点参考。 连通检测 许多应用程序常常需要在程序中直接进行联网操作,以便进行一些必要的处理(如在线注册和在线帮助等),这就要求我们在程序中建立某些连接。很多软件在不知用户是否联网的情况下就启动浏览器查找网址,结果只能查出一错误网页,既浪费用户时间又没有任何效果。如果应
用VB制作文件下载程序(转)
用VB制作文件下载程序 下载文件是每个网友都经常做的事,大家一般都是用一些专用软件如“网络蚂蚁”来完成。但是,如果要自己编写一个程序,实现下载一个特定的文件(如下载相关的网页并显示出来)又该怎么做呢?不要急,看了下面的介绍你就会知道实现文件的下载其实是很简单的。 在VB中有一个 Winsock 控件,通过它可以实现文件的下载。下面我首先介绍一下该控件的主要属性、方法和事件: localPor属性:设置本地计算机使用的端口(一般设置为0); Protocol属性:设置Winsock控件使用的协议,tcP或uDP(一般设置为0);
用VB实现用户登录密码的修改(转)
用VB实现用户登录密码的修改 我们在设计应用软件时,总希望在进入软件主窗体之前,显示用户登录窗体,要求用户输入密码,当用户的密码得到验证后,即可进入软件应用环境。用户登录密码的修改是指进入主窗体后,能够对登录密码进行修改,设置的新密码将成为下一次登录时用的密码,本文就谈谈如何在VB5.0中实现用户登录密码的修改。 一、实现原理 在VB5.0中,文件共有三类:顺序文件;随机文件;二进制文件。顺序文件的主要用途是存取文本文件,按照先后顺序进行存取数据,使用简单容易。要实现密码的修改设置,可把密码保存在一