You are here:
Visual
Basic > VB6
(Beginners Tutorial)
Previous Page | Table
of Contents | Next Page
Multiline TextBox Controls - Visual Basic 6 TextBox Control
You create multiline TextBox controls by setting the MultiLine property to
True and the ScrollBars property to 2-Vertical or 3-Both. A vertical scroll bar
causes the contents of the control to automatically wrap when a line is too long
for the control's width, so this setting is most useful when you're creating memo
fields or simple word processor-like programs. If you have both a vertical and
a horizontal scroll bar, the TextBox control behaves more like a programmer's
editor, and longer lines simply extend beyond the right border. I've never found
a decent use for the other settings of the ScrollBars property (0-None and 1-Horizontal)
in a multiline TextBox control. Visual Basic ignores the ScrollBars property if
MultiLine is False.
Both these properties are read-only at run time, which means that you can't
alternate between a regular and a multiline text box, or between a word processor-like
multiline field (ScrollBars = 2-Vertical) and an editorlike field (ScrollBars
= 3-Both). To tell the whole truth, Visual Basic's support for multiline TextBox
controls leaves much to be desired. You can do very little with such controls
at run time, except to retrieve and set their Text properties. When you read the
contents of a multiline TextBox control, it's up to you to determine where each
line of text starts and ends. You do this with a loop that searches for carriage
return (CR) and line feed (LF) pairs, or even more easily using the new Split
string function:
' Print the lines of text in Text1, labeling them with their line numbers.
Dim lines() As String, i As Integer
lines() = Split(Text1.Text, vbCrLf)
For i = 0 To UBound(lines)
Print (i + 1) & ": " & lines(i)
Next
The support offered by Visual Basic for multiline TextBox controls ends here.
The language doesn't offer any means for learning such vital information as at
which point each line of text wraps, which are the first visible line and the
first visible column, which line and column the caret is on, and so on. Moreover,
you have no means of programmatically scrolling through a multiline text box.
The solutions to these problems require Microsoft Windows API programming. In
my opinion, however, Visual Basic should offer these features as built-in properties
and methods.
You should account for two minor issues when including one or more multiline
TextBox controls on your forms. When you enter code in a word processor or an
editor, you expect that the Enter key will add a newline character (more precisely,
a CR-LF character pair) and that the Tab key will insert a tab character and move
the caret accordingly. Visual Basic supports these keys, but because both of them
have special meaning to Windows the support is limited: The Enter key adds a CR-LF
pair only if there isn't a default push button on the form, and the Tab key inserts
a tab character only if there aren't other controls on the form whose TabStop
property is set to True. In many circumstances, these requirements can't be met,
and some of your users will find your user interface annoying. If you can't avoid
this problem, at least add a reminder to your users that they can add new lines
using the Ctrl+Enter key combination and insert tab characters using the Ctrl+Tab
key combination. Another possible approach is to set the TabStop property to False
for all the controls in the form in the multiline TextBox's GotFocus event and
to restore the original values in the LostFocus event procedure.
More on VB6 TextBox Controls
See Also
Previous Page | Table
of Contents | Next Page
|