相关主题“显露子控件属性”中的代码示例显示了如何使用标准类型的 Font 和 OLE_COLOR 来创建使用标准的、系统提供的属性页面的属性,用户可以通过“属性”窗口的椭圆按钮访问到这些页面。
只要有可能,尽可能地使用 Visual Basic 提供的标准数据类型和枚举作为控件属性的数据类型。如果在“属性”窗口中提供一致的属性值选择,用户使用起来将更加方便。
以下代码使用标准枚举类型作为 MousePointer 属性:
Public Property Get MousePointer() As _
MousePointerConstants
MousePointer = UserControl.MousePointer
End Property
Public Property Let MousePointer(ByVal NewPointer As _
MousePointerConstants)
UserControl.MousePointer = NewPointer
PropertyChanged "MousePointer"
End Property
当 MousePointer 属性出现在“属性”窗口时,它将与其它控件的 MousePointer 属性具有相同的枚举。
可以使用“对象浏览器”来确定 Visual Basic 类型库中有什么枚举可用。
注意 关于 PropertyChanged 的作用和重要性,请参阅本章前面的“在控件中添加属性”。
Visual Basic 提供四种标准数据类型,控件制作者对此会特别感兴趣。
OLE_COLOR 数据类型适用于返回颜色的属性。当属性被声明为 OLE_COLOR 时,“属性”窗口中会显示出一个颜色选取对话框,允许用户可视地为属性选择颜色,而不用记忆对应的数字表示。
在“显露子控件属性”中可以找到使用 OLE_COLOR 的例子。
OLE_COLOR 在内部当作 Long 来处理。
OLE_TRISTATE 数据类型用于三态复选框。如果要制作具有复选框功能的控件,可以将其 Value 属性声明为 OLE_TRISTATE。
OLE_TRISTATE 是具有下列值的枚举:
如果要开发具有选项按钮功能的控件,那么控件的 Value 属性可以使用 OLE_OPTEXCLUSIVE 数据类型。这会使该控件的 Value 属性的行为类似于内部的 OptionButton 控件的 Value 属性。也就是说,当控件实例被分组之后,如果用户单击未被选中的控件实例,则当前的被选中实例的 Value 将自动变为 0 (即不选这个按钮),而被单击的实例的 Value 被置为 1。
这一行由容器处理。容器会检查它包含的每个控件的 Value 属性,并将那些类型为 OLE_OPTEXCLUSIVE 的组成一组。
注意 必须使用“过程属性”对话框使 Value 属性成为缺省属性,从而使控件宿主允许上述行为。
在内部,OLE_OPTEXCLUSIVE 是作为 Boolean 类型处理的。
此数据类型可以作为事件的一个参数,允许用户取消事件。例如,标准的 KeyPress 事件传递一个 Cancel 参数作为最后一个参数。如果将此参数设置为 False,该事件就被取消了。
在内部,OLE_CANCELBOOL 作为 Boolean 类型处理。