VB6.0属性过程详解(Property过程)[第三章:枚举属性和OLE_COLOR类型(设计限定输入的属性,如DragMode属性)]

  

     这里是《VB6.0属性过程详解(Property过程)》的第三章,如果你没有看过上面的这篇文章,你应该先去看看,除非你觉得你已经初步了解了属性过程的运作机制。

            第三章:枚举属性和OLE_COLOR类型

        同样,提出个问题,又是看图:

       我们看DragMode属性,你有没有发现,属性的值被限定,你只能选择0(vbmanual)或者1(vbutomatic),那么这样的属性又该如何设计呢?

       大家都用过Type语句声明一个自定义的类型吧;那么大家更应该用过Const来声明一个常量吧。问这些干什么?别急,那你有没有想过把它们合起来呢?想一下吧,或许你会知道合起来是什么——没错,就是“枚举”。

          枚举 ,可能大家不太熟悉,准确来说它是一系列常数的集合,同时它也是一个类型,它限定了声明成这个类型的变量只能取枚举中的值,而不能取其他值。注意:每一个枚举都是公用的,所以,在一个工程里同样的枚举只需声明一次。枚举是需要事先声明的,他的标准声明如下:

VB代码开始:

Public Enum 枚举名称

     Var1 = Num

     ……

End Enum

VB代码结束

现在,我就以上面的DragMode属性为例,将我们原来的ABSS属性做出DragMode属性的效果。首先,我们声明枚举,在用户控件设计器的代码窗口顶端的声明部分加入如下的代码:

VB代码开始:

Public Enum E_ABSS

    vbmanual = 0

    vbutomatic = 1

End Enum

VB代码结束

这时候我们就声明了一个名为E_ABSS的枚举类型,好了现在我们将ABSS属性的属性过程改成如下这样:

VB代码开始:

Public Property Get ABSS() As E_ABSS
ABSS = gAbss
End Property

Public Property Let ABSS(ByVal vNewValue As E_ABSS)
gAbss = vNewValue
End Property

VB代码结束

改好之后整个代码窗口的代码如下图所示:

 

好了,现在回到窗体窗口,点击一下在窗口上的MyControl控件,然后查看属性页,找到ABSS属性,同样,点击一下它,我们就能够看到如下图所示的属性值限制了:

          到了这里,仿佛一切都已经搞定了,但是,或许有一种属性你忽略了,就是设置颜色的属性,例如:BackColor属性,他有一个颜色选择框,这个又怎么设计呢?这个问题很经典,但是这是这篇文章里最后一次这样问你。其实非常简单就是将属性改成OLE_COLOR类型就可以了。之前说了那么多,我这里就不一一解释了,改好的代码如下图所示:

改好之后,回到窗体窗口,接着~~(你懂的),你就会看到ABSS属性变成这般模样了:

OK了,到这里,大功告成,全篇文章完。BYE,88

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页