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

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...