You are here:
Basic > VB6
| Table of Contents | Next
Label and Frame Controls in Visual Basic 6 (VB6)
Label and Frame controls have a few features in common, so it makes sense to
explain them together. First they're mostly "decorative" controls that
contribute to the user interface but are seldom used as programmable objects.
In other words, you often place them on the form and arrange their properties
as your user interface needs dictate, but you rarely write code to serve their
events, generally, or manipulate their properties at run time.
Most people use Label controls to provide a descriptive caption and possibly
an associated hot key for other controls, such as TextBox, ListBox, and ComboBox,
that don't expose the Caption property. In most cases, you just place a Label
control where you need it, set its Caption property to a suitable string (embedding
an ampersand character in front of the hot key you want to assign), and you're
done. Caption is the default property for Label controls. Be careful to set the
Label's TabIndex property so that it's 1 minus the TabIndex property of the companion
Other useful properties are BorderStyle(if you want the Label control to appear
inside a 3D border) and Alignment (if you want to align the caption to the right
or center it on the control). In most cases, the alignment depends on how the
Label control relates to its companion control: for example, if the Label control
is placed to the left of its companion field, you might want to set its Alignment
property to 1-Right Justify. The value 2-Center is especially useful for stand-alone
Different settings for the Alignment property of Label controls.
You can insert a literal & character in a Label control's Caption property
by doubling it. For example, to see Research & Development you have to type
&Research && Development. Note that if you have multiple but isolated
&s, the one that selects the hot key is the last one and all others are ignored.
This tip applies to all the controls that expose a Caption property. (The &
has no special meaning in forms' Caption properties, however.)
If the caption string is a long one, you might want to set the Label's WordWrap
property to True so that it will extend for multiple lines instead of being truncated
by the right border of the control. Alternatively, you might decide to set the
AutoSize property to True and let the control automatically resize itself to accommodate
longer caption strings.
You sometimes need to modify the default value of a Label's BackStyle property.
Label controls usually cover what's already on the form's surface (other lightweight
controls, output from graphic methods, and so on) because their background is
considered to be opaque. If you want to show a character string somewhere on the
form but at the same time you don't want to obscure underlying objects, set the
BackStyle property to 0-Transparent.
If you're using the Label control to display data read from elsewhere—for
example, a database field or a text file—you should set its UseMnemonics
property to False. In this case, & characters have no special meaning to the
control, and so you indirectly turn off the control's hot key capability. I mention
this property because in older versions of Visual Basic, you had to manually double
each & character to make the ampersand appear in text. I don't think all developers
are aware that you can now treat ampersands like regular characters.
As I said before, you don't usually write code in Label control event procedures.
This control exposes only a subset of the events supported by other controls.
For example, because Label controls can never get the input focus, they don't
support GotFocus, LostFocus, or any keyboard-related events. In practice, you
can take advantage only of their mouse events: Click, DblClick, MouseDown, MouseMove,
and MouseUp. If you're using a Label control to display data read from a database,
you might sometimes find it useful to write code in its Change event. A Label
control doesn't expose a specific event that tells programmers when users press
its hot keys.
You can do some interesting tricks with Label controls. For example, you can
use them to provide rectangular hot spots for images loaded onto the form. To
create that context-sensitive ToolTip, I loaded the image on the form using the
form's Picture property and then I placed a Label control over the Microsoft BackOffice
logo, setting its Caption property to an empty string and the BackStyle property
to 0-Transparent. These properties make the Label invisible, but it correctly
shows its ToolTip when necessary. And because it still receives all mouse events,
you can use its Click event to react to users' actions.
Frame controls are similar to Label controls in that they can serve as captions
for those controls that don't have their own. Moreover, Frame controls can also
(and often do) behave as containers and host other controls. In most cases, you
only need to drop a Frame control on a form and set its Caption property. If you
want to create a borderless frame, you can set its BorderStyle property to 0-None.
Controls that are contained in the Frame control are said to be child controls.
Moving a control at design time over a Frame control—or over any other container,
for that matter—doesn't automatically make that control a child of the Frame
control. After you create a Frame control, you can create a child control by selecting
the child control's icon in the Toolbox and drawing a new instance inside the
Frame's border. Alternatively, to make an existing control a child of a Frame
control, you must select the control, press Ctrl+X to cut it to the Clipboard,
select the Frame control, and press Ctrl+V to paste the control inside the Frame.
If you don't follow this procedure and you simply move the control over the Frame,
the two controls remain completely independent of each other, even if the other
control appears in front of the Frame control.
Frame controls, like all container controls, have two interesting features.
If you move a Frame control, all the child controls go with it. If you make a
container control disabled or invisible, all its child controls also become disabled
or invisible. You can exploit these features to quickly change the state of a
group of related controls.
Previous Page | Table
of Contents | Next Page