用 RichTextBox 控件,最终用户可以改变文本的多种属性,比如字体、字体的大小和字体颜色。在本说明中,在应用程序的工具栏中有三个 ComboBox 控件,它们被用来显示 RichTextBox 控件中的文本的属性:
用这些 ComboBox 控件,用户可以选择用于选中文本的字体、字体颜色和字体大小。
在本说明中使用了如下对象:
注意 下面的步骤简要地勾画出了本说明的创建过程。每一步在后面的部分都将进行更详细的介绍。
要创建显示属性的三个组合框,请按照以下步骤执行:
Form 对象的 ScaleMode 属性确定特定属性的度量单位。在 RichTextBox 控件中,SelIndent、SelHangingIndent 以及其它属性,都使用 ScaleMode 决定的单位。对这些属性来说,用厘米作单位比用缇作单位更方便。另外,在创建 PlaceHolder 样式的 Button 对象时,ScaleMode 属性还决定了 Button 对象宽度的单位。
要将窗体对象的 ScaleMode 属性设置为厘米,请按照以下步骤执行:
在“工具箱”中,双击 Toolbar 控件图标。在“属性”窗口中,双击“名称”,并将该控件的名称改为“tlbRTF”。
在“工具箱”中需要放置三个 ComboBox 控件。每个 ComboBox 控件中都将被充填入一些字体的属性。
要创建三个 ComboBox 控件,请按照以下步骤执行:
ComboBox | 属性 | 值 |
ComboBox1 | Name | cmbFontName |
ComboBox2 | Name | cmbFontSize |
ComboBox3 | Name | cmbFontColor |
还必须向这些 ComboBox 控件充填适当的值。下面的代码在 Form_Load 事件中分别充填每个 ComboBox 控件。
Private Sub Form_Load() '
向cmbFontColor
中添加颜色。With cmbFontColor
.AddItem "Black"
.AddItem "Blue"
.AddItem "Red"
.AddItem "Green"
.ListIndex = 0
End With
Dim i As Integer
With cmbFontName
For i = 0 to Screen.FontCount - 1
.AddItem Screen.Fonts(i)
Next i
'
将ListIndex
设置为0
。.ListIndex = 0
End With
With cmbFontSize
'
向组合框中充填字体大小。'
单位增量为2
。For i = 8 To 72 Step 2
.AddItem i
Next i
'
将ListIndex
设置为0
.ListIndex = 1 '
大小为10
。End With
End Sub
要设置 RichTextBox 控件中使用的字体、字体颜色和字体大小,可以使用 SelFontName、SelColor 和 SelFontSize 属性。在每个 ComboBox 控件的 Click 事件中,分别设置适当的属性。为其属性赋值之后,需要将焦点还回 RichTextBox 控件:
Private Sub cmbFontName_Click() rtfData.SelFontName = cmbFont rtfData.SetFocus End Sub Private Sub cmbFontSize_Click() rtfData.SelFontSize = cmbFontSize.Text rtfData.SetFocus End Sub Private Sub cmbFontColor_Click() '
用Select Case
语句处理'ComboBox
控件的ListIndex
,'
将文本的字体颜色做相应改变。'
用颜色的内部常数设置字体颜色。Me.Show
With rtfData
Select Case cmbFontColor.ListIndex
Case 0
.SelColor = vbBlack
Case 1
.SelColor = vbBlue
Case 2
.SelColor = vbRed
Case 3
.SelColor = vbGreen
End Select
End With
'
将焦点还回RichTextbox
控件。rtfData.SetFocus
End Sub
当插入点在 RichTextBox 控件中移动时,ComboBox 控件还可用来向用户报告文本的属性。当移动插入点,或者改变选中的文本时,都会产生 SelChange 事件。这样,就可以在 SelChange 事件中,检查 SelFontName、SelFontColor 和 SelFontSize 属性,并重新设置相应的 ComboBox 控件。
Private Sub rtfData_SelChange() 'SelFontSize
返回字体的大小。'
如果字体大小不一致,则返回Null
。If Not IsNull(rtfData.SelFontSize) Then
cmbFontSize.Text = rtfData.SelFontSize
End If
'
在ComboBox
中显示字体名称。cmbFont.Text = rtfData.SelFontName
'
在ComboBox
中显示文本的颜色。'
用颜色的内部常数确定文本的颜色。Select Case rtfData.SelColor
Case vbBlack
cmbFontColor.ListIndex = 0
Case vbBlue
cmbFontColor.ListIndex = 1
Case vbRed
cmbFontColor.ListIndex = 2
Case vbGreen
cmbFontColor.ListIndex = 3
End Select
End Sub