Visual Basic Concepts

Using Standard Control Property Types

The code examples in the related topic "Exposing Properties of Constituent Controls" show the use of the standard types Font and OLE_COLOR to create properties that use standard, system-supplied property pages, which the user can access with the ellipsis button in the Properties window.

Whenever possible, use the standard data types and enumerations provided by Visual Basic as data types of your control's properties. This makes life easy for your users, by presenting consistent property value choices in the Properties window.

Standard Enumerations

The following code uses the standard enumeration for the MousePointer property.

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

When the MousePointer property appears in the Properties window, it will have the same enumeration as the MousePointer properties of other controls.

You can use the Object Browser to determine what enumerations are available in the Visual Basic type libraries.

Note   The purpose and importance of PropertyChanged are discussed in "Adding Properties to Controls," earlier in this chapter.

Standard Data Types

Visual Basic provides four standard data types of special interest to control authors.

OLE_COLOR

The OLE_COLOR data type is used for properties that return colors. When a property is declared as OLE_COLOR, the Properties window will display a color-picker dialog that allows the user to select the color for the property visually, rather than having to remember the numeric equivalent.

An example of the use of OLE_COLOR can be found in "Exposing Properties of Constituent Controls."

OLE_COLOR is treated internally as a Long.

OLE_TRISTATE

The OLE_TRISTATE data type is used for three-state check boxes. If you're authoring a control with check box functionality, declare its Value property as OLE_TRISTATE.

OLE_TRISTATE is an enumeration with the following values:

  • 0 - Unchecked

  • 1 - Checked

  • 2 - Gray

OLE_OPTEXCLUSIVE

If you're developing a control with option-button functionality, use the OLE_OPTEXCLUSIVE data type for the Value property of your control. This will cause your control's Value property to behave like that of the intrinsic OptionButton control. That is, when instances of your control are grouped, and the user clicks an unselected control instance, the currently selected instance's Value is automatically set to 0 (thus unselecting the button), and the Value of the clicked instance is set to 1.

This behavior is handled by the container. The container checks the Value property for each control it contains, and groups those that are of type OLE_OPTEXCLUSIVE.

Note   You must use the Procedure Attributes dialog box to make the Value property the default property, in order for the control host to enable the behavior described.

OLE_OPTEXCLUSIVE is handled as a Boolean type internally.

OLE_CANCELBOOL

Use this data type for an event argument that allows the user to cancel the event. For example, the standard KeyPress event passes a Cancel parameter as its last parameter. If the user sets this parameter to False, the event is canceled.

OLE_CANCELBOOL is handled as a Boolean type internally.