这里是《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
原文链接:https://www.f2er.com/vb/261055.html