用Visual Basic6类模块打造控件

VB6因为简单易用,受到很多朋友的喜欢。可是也有人说它功能简单,没有给开发者提供足够的 发挥余地。比如不能方便地继承现有控件而派生出自己的控件。(什么?写ActiveX控件?太麻烦了吧。 要花大量时间在接口的设计和实现上,而且你不想让你的软件发布时带一堆OCX控件吧?)其实还是有办 法的,我们可以利用VB6里的类模块实现对控件的特殊控制和事件响应。本文介绍使用类模块把普通的 Label控件变成窗体动态分割条。

图1 带分隔条的窗体

初识类模块

类模块其实是一个对象的定义,封装了一些属性和方法,使用前需要生成一个实例:

’生成类模块clsTest的一个实例test
Dim test as new clsTest

然后可以使用类模块的方法:

test.DoSomthing() ’调用test 的方法DoSomthing()

一个简单的例子

做一个鼠标移上去后自动获得焦 点并将内容选中的“聪明”编辑框。

1、新建一工程,在[工程]菜单中,选择[添 加类模块],添加一个类模块,更改其名称为clsTest。

2、进入类模块编辑界面(如图2)。

图2 编辑类模块

在左边的下拉框中 选择“通用”,键入以下代码:

’定义一个带事件的文本框变量
Dim WithEvents MyText As TextBox
’保存文本框是否获得焦点的布尔变量
Dim bSetted As Boolean
’自己定义的类模块的方法,传入参数是文本框。
Public Sub BindText(t As TextBox)
 ’将文本框变量设置为传入的文本框,即是对传入文本框的引 用
 Set MyText = t
End Sub

3、在左边的下拉框中选择“Class”,在右边下拉框中选择Initialize,这是类模块 的初始化事件,可以在这里写自己的初始化代码。VB会自动为我们添加一个事件子程序。我们要做的就 是在其中添上自己的代码。其实这一步略过也没什么影响,不过对变量进行初始化是一个好习惯。

Private Sub Class_Initialize()
 ’将文本框变量初始化Nothing
 Set MyText = Nothing
 bSetted = False
End Sub

4、在左边的 下拉框中选择“MyText”,注意到了吗,它就是我们在第2步定义的带事件的文本框变量。VB 把它加进来了,再到右边下拉框中点击下拉按钮,呵呵,看到什么了?原来是我们熟悉的TextBox的所有 事件!只不过这里的MyText文本框并不实际存在,只是一个代

号,等着你给它指定一个实际 的文本框呢。

添加事件响应代码,这就不用我说了吧。 

Private Sub MyText_GotFocus()
 bSetted = True
End Sub
Private Sub MyText_LostFocus()
 bSetted = False
End Sub
’鼠标在控件上移动时,如果还没设置焦点,将 它设为焦点,
’并将内容选中
Private Sub MyText_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 If (Not bSetted) Then
   MyText.SetFocus
  MyText.SelStart = 0
  MyText.SelLength = 9999
 End If
End Sub

到此,类模块宣告完毕,保存它(.cls文件)。

5、下 面就是类模块的使用,非常简单。现在一个窗体上放3 个TextBox控件,名称分别为Text1、Text2、Text3。

图3 测试类模块

时间: 2024-10-25 11:56:56

用Visual Basic6类模块打造控件的相关文章

在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组

visual|创建|控件|数组 在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组 Matthew A. StoeckerVisual Studio TeamMicrosoft Corporation 2002 年 1 月 摘要:本文介绍如何使用 Visual Basic .NET 和 Visual C# .NET 创建和管理控件数组. 目录 简介 前提 创建项目 实现集合 公开控件数组 创建公共事件处理程序 测试项目 总结 简介数组为使用共享公共功能的控件

动态网站设计-有关Visual studio中的登录控件

问题描述 有关Visual studio中的登录控件 我想知道在Visual studio2008中的那些登录控件分别代表什么意思,在什么时候用啊.(如login.loginview.loginstatus等) 我想做个登录模块,但对那些控件不是很懂.顺便也说下那些验证控件的用法 解决方案 Visual Studio 第三方控件Visual Studio 控件命名规范Visual Studio中解决MSCOMM控件的问题

如何在自定义类中调用控件

问题描述 publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}............publicclassTestMessageFilter:IMessageFilter{.............(2)}}大体的代码结构就是这样的,在form1窗体上里有一个contextmenustrip1控件,我想在(2)语句处调用contextmenustrip1让它显示,该怎么实现啊!TestMessageFilter是一

mfc-MFC 给CPrintDiaog类添加一个控件

问题描述 MFC 给CPrintDiaog类添加一个控件 CPrintDiaog对话框的资源编辑器在哪里?怎么样添加一个控件在CPrintDiaog类的界面上? 解决方案 CPrintDialog是公共对话框,所以没法直接编辑资源,你只有用InitDialog里面自己CreateXXX创建控件.

asp.NET的这个系统的treeview点击后出现的不同模块不同控件,是怎么实现的,是不是通过动态添加控件,可是动态添加控件怎么设置控件的后台代码呢???

问题描述 asp.NET的这个系统的treeview点击后出现的不同模块不同控件,是怎么实现的,是不是通过动态添加控件,可是动态添加控件怎么设置控件的后台代码呢??? 解决方案 解决方案二:把10几年前的这个最基本的入门教程()中的例子全都做一遍,然后再问.解决方案三:引用1楼sp1234的回复: 把10几年前的这个最基本的入门教程()中的例子全都做一遍,然后再问. 果然是大神解决方案四:想必楼主说的是通过treeview实现菜单导航吧,给你一个实例参考

Visual C++环境下DBGrid控件的使用

DBGrid数据表格控件以其短小精悍而深受大家的喜爱,但其如何在Visual C++中使用却很少有文章提及,本文将VC下使用DBGrid的具体步骤简要地介绍给大家. 一.前期准备 为了实现DBGrid控件的自动捆绑,我们需要建立一个数据库和与之关联的数据源,本例中我们用Access建立数据库mydata.mdb,在数据库中新建一张表users,包含三个字段username,address,email,并输入多条记录. 在控制面板ODBC数据源中建立名称为test的系统DSN,并将其指向mydat

VISUAL C++中的OCX控件的使用方法

新一代32位操作系统WINDOWS 95舍弃了VBX控件,取而代之的是OCX控件.OCX控件具有功能强大,界面美观的特点,然而许多参考书中并没有详细阐述OCX控件的使用方法,使得一些如数据库表格,远程数据控件等接口复杂的OCX难于使用.这里将详细阐述OCX的使用方法. 首先提醒读者要注意的是:使用OCX构件之前,必须登记注册,否则不能使用.安装VISUAL C++时,系统自动注册登记软件附带的OCX控件.如果不幸没有登记,那么请使用REGSVR32应用程序来注册.以VISUAL C++ 5.0为

在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)

datagrid|visual|控件|下拉|下拉列表 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定.本文介绍一种只在当前编辑单元格中显示下拉列表框的方法,供大家参考. 首先新建一个Windows应用程序,将主窗体重命名为MainForm,在MainForm中加入一个DataGridView控件,命名为dgv_User.如下图所示:

如何在普通类中 使用控件类??

问题描述 已经引用了usingSystem.Windows.Forms;可还是不能用控件类希望能像下面的图一样能在普通类中使用listviewopenfileDialog等控件类知道的麻烦说一下我只有40积分了.. 解决方案 解决方案二:添加引用里面加上System.Windows.Forms.dll解决方案三:正常,应该在后台cs文件中使用openfileDialog,而公共类中不应包含.