创建自己的ActiveX控件(vb)

          在“文件”选单中选择“新建工程”,然后双击“ ActiveX 控件 图标,生成一个控件工程项目(缺省名 UserControl1 )。此时设计窗口显示一个类似于窗体的界面(无边框),其属性窗口也类似于窗体的属性窗口,只是有很多熟悉的属性没有了,且还有一些一般窗体不具有的属性。选取 工程选单 最下面的 “UserControl1 属性 项,在出现的对话框中改工程名称为 “TimeCtr” 。在属性窗口中改控件名称为 “MyTime”
  好了,我们开始做一些具体的工作,在控件的设计窗体中加入一个 Label 控件,改名为 “lblTime” ,设其 “AutoSize” “True” “Caption” 属性为空;再在控件设计窗体中加入一个 Timer 定时器控件,设定时器的 “Interval” 属性为 1000 ;接下来通过拖动控件右下角的拖曳点调整控件为一小矩形;在 Timer1_Timer() 过程中加入如下代码:

lblTime.Caption = Time 'Time
返回系统当前时间

现在将工程保存一下。由于控件工程不能独立运行,我们创建一个新的工程来测试一下设计的新控件。

选取“文件”选单上的“添加工程”,注意不要用“打开工程”或“新建工程”,那样会关闭控件工程。创建一个“ Standard exe” 工程,并将控件工程的设计窗口关闭,这时会发现在控件工具栏的最下边出现了一个名为 “MyTime” 的新控件。将其放至 Form1 窗体内,窗体上会出现一行文字,显示的正是当前时间,这就是新创建的 MyTime 的实例 “MyTime1”

  这样我们创建了一个控件并通过测试看到了该控件的外观和作用,但这距离一个实际应用的控件还很遥远,它应该具有更实用的属性、事件和方法。下面我们来演示一下怎样为控件添加属性、事件和方法。

添加“ UpdateInterval” 属性

  双击“ MyTime” 控件,进入其代码窗口,选择 工具 选单中的 添加过程 项,在对话框中输入名称为 “UpdateInterval” ,类型选 属性 ,关闭对话框后代码窗口内将出现两个空过程,填写代码如下:
   Public Property Get UpdateInterval() As Variant
   UpdateInterval = Timer1.Interval
   End Property
   Public Property Let UpdateInterval(ByVal vNewValue As Variant)
   Timer1.Interval = vNewValue
   PropertyChanged "UpdateInterval"
   End Property
  其中前者用于获取 UpdateInterval 属性,后者用于设置 UpdateInterval 属性。
  现在关闭控件设计窗口,打开测试工程的窗体,点击窗体中的控件 MyTime1 ,看一下其属性窗口,出现了一个 “UpdateInterval” 属性,且值为 1000 ,也就是我们最初为控件设定的 Interval 属性。现在改变该属性值为 3000 ,会发现控件上时间更新慢了,它现在是每三秒钟显示一次时间,当然会感觉慢了。
为控件添加事件
  在测试工程的代码窗口中,当前只有 GotFocus LostFocus DragOver DragDrop 四个事件;而对于扩展的事件, VB5 建议的包括 Click DblClick KeyDown KeyPress KeyUp MouseDown MouseMove MouseUp ,这也是很多控件中最常用的。下面我们以 Click 为例进行说明。
  选取“工具”选单中“添加过程”项,在名称中填写“ Click” ,类型为 事件 。我们会发现代码窗口中 通用 项下出现如下代码:
   Option Explicit
   Public Event Click()
  大家也许能够看得出来,在这里只是定义了两个名称,它们和鼠标的 Click 毫无关系,下面我们就把它们联系起来。在 “MyTime" 控件工程的代码设计窗口中加入 MyTime lblTime Click 事件,代码如下:
   Private Sub MyTime_Click()
     RaiseEvent Click
     End Sub
     Private Sub lblTime_Click()
     RaiseEvent Click
     End Sub
   RaiseEvent 的功能是把控件或其上的子控件的事件进行转发,因为控件总是由其它的子控件组成,比如上面 lblTime Click 事件转为控件的 Click 事件。
  现在关闭控件设计窗口,打开测试工程,在 MyTime1 的过程列表中,发现多了事件 Click ,点击 Click ,添加代码如下:
     Private Sub MyTime1_Click()
   MyTime1.UpdateInterval = 3000
   MsgBox (″UpdateInterval:″ MyTime1.UpdateInterval)
   End Sub
  运行测试工程,点击窗口中显示的时间,会弹出一个 Message 对话框 , 显示了刚设定的 UpdateInterval 属性值是 3000
添加控件的方法
  选取“工具”选单中“添加过程”项,在对话框中填写名称“ CallMe” ,类型为 函数 。代码窗口将产生如下代码:
   Public Function CallMe() As Variant
  
  End Function
  加入语句: MsgBox(″CallMe() 方法正在运行! ″) ,并在测试工程的 MyTime1_Click() 过程中加入语句: MyTime1.CallMe ,运行后点击显示时间处会出现使用此方法产生的 Message 对话框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值