现在的位置: 首页 > 综合 > 正文

VB6.0属性过程详解(Property过程)[第一章][《VB6.0 ActiveX 控件开发详解》附属文章]

2013年10月01日 ⁄ 综合 ⁄ 共 1899字 ⁄ 字号 评论关闭

 

          
这是《VB6.0 ActiveX 控件开发详解》的附属文章,如果没有看过这一篇文章的话应先去看看,除非你认为你已经有了一定的ActiveX控件开发基础。

    第一章:认识属性过程

       在用VB6.0开发ActiveX部件的过程中,我们难免要接触到一种不太常用(在标准EXE工程里),但是又很重要的的机制,那就是属性过程(Property过程)。属性大家经常设置Caption属性,Value属性等等,这些属性要么影响着控件的运行方式,要么影响着控件的外观,可是,这些属性在控件内部又是怎样的呢?

       那么我们来看一下,首先,启动VB6.0,建立一个标准EXE工程,再添加一个ActiveX 控件工程。将控件设计器的名称属性由UserControl1修改成MyControl。做好后的设置如下图所示:

好了,双击用户控件设计器,出现用户控件设计器的代码窗口,如下图所示:

这时候,选择【工具】菜单的【添加过程】菜单项,做好如下图的设置:

这时候在代码窗口出现了如下的代码:

VB代码开始:

Public Property Get ABSS() As Variant

 

End Property

Public Property Let ABSS(ByVal vNewValue As Variant)

 

End Property

VB代码结束:

       这两个过程就是我们所说的属性过程,它定义了一个名为ABSS的属性。这时候我们发现,一个属性却有两个属性过程,这两个过程除了用Property关键字标识之外,还有一个不同的子标识,就是Get和Let关键字。现在,我就来介绍一下这两种属性过程。

           属性过程有三种,均以Property关键字标识,同时,它们又具有不同的子标识关键字,分别是Get,Let,Set。我们将这三种过程分别称作“属性Get过程”,“属性Let过程”和“属性Set过程”。前面两种的声明就如上面的代码所示,而属性Set过程的声明与属性Let过程的类似,只是将Let换成Set而已。    

        不过这些不同子标识关键字的属性过程有什么用呢?现在,我们将我们设计的MyControl控件拖放到窗体上(由于我们没有对用户控件设计器的图形界面作更改,所以控件是空白的),然后打开窗体的代码窗口,在Click事件中加入如下的代码,并且在开头设置断点,结果如下图所示:

       

然后我们在用户控件设计器的代码窗口中加入一些代码,结果如图所示:

接着,我们单击【运行】菜单的【启动】菜单项(或单击工具栏的启动按钮),工程1的窗体出现了,但是断点没什么反应。别着急,单击窗口(别单击刚才拖有控件的地方),程序在断点处停住了,按F8进入下一条语句,现在的运行情况如下图所示:

这就说明程序运行到了“a = MyControl1.ABSS”处,这句代码就是将属性ABSS得值读出来并赋给a这个变量,也就是读取属性值。再按F8,这时候我们发现,程序转跳到了属性Get过程里,如下图所示:

也就是说,当我们通过各种方式(属性窗口,代码)读取一个属性的属性值时,该属性的Get过程就会发生好,弄懂了Get过程。我们再按三次F8。程序又回到了窗体1的代码窗口,现在到了“MyControl1.ABSS
= 1”这一句代码。这句代码是将ABSS属性的属性值设成1,就是设置属性值。按照惯例,我们再按一次F8。这时候我们发现,程序转跳到了Let过程里,如下图所示:

这样就说明,当我们通过各种方式(属性窗口,代码)修改一个属性的属性值时,该属性的Let事件就会发生。值得注意的是,并不是每一个属性都需要Get和Let过程都有,当我们需要设计只读的属性时,我们就需要将Let(Set)过程删掉;当我们需要设计只写的属性时,我们就需要将Get过程删掉。

        不过,还没完,既然修改了属性值,那么作为程序员的我们,又怎么拿回客户设置的新的属性值呢?又是老规矩,按F8呗。尽管F8不能让我们拿到新的属性值,但是它可以让我们看到怎么拿回新的属性值。按完F8后,将鼠标移到Let过程的vNewValue参数上。不知道你看到了没有,不过我看到了这个:

还记得上面的代码吗?前面的代码正是将ABSS属性设为1。其实,我们早就该想到,Let过程的vNewValue参数正是新的属性值,就这样,我们轻而易举的拿到了新的属性值。

到此,第一章完。

你可能会问,那么属性Set过程又有什么用呢?别着急,那是第二章的内容。期待我的下一篇博文《VB6.0属性过程详解(Property过程)[第二章:属性Set过程的应用][……]》

抱歉!评论已关闭.