Toolbar Scenario 应用实例 2:用成组的按钮设置 RichTextBox 控件的文本对齐方式

本应用实例建立在前一应用实例的基础上,在前一应用实例中,Toolbar 控件被用来打开文件,并将其装载到 RichTextBox 控件中。在本应用实例中,在 Toolbar 控件中加入三个按钮,它们分别带有左对齐、居中和右对齐图标。

这三个按钮都是“按钮组”(tbrButtonGroup)样式的一部分,该样式不允许三个按钮中的多个被同时按下。

重点 要指定哪些按钮是按钮组的一部分,必须用两个“分隔符”(tbrSeparator) 样式的按钮将它们“包围”起来。例如,如果在一组中有三个按钮,并且它们是第四到第六个按钮,那么第三个和第七个按钮必须是“分隔符”样式的,以便将该组按钮包围起来。

当用户在 RichTextBox 控件中单击时,将产生 SelChange 事件。在该事件中,代码检查 SelAlignment 属性,该属性返回了当前选定文本的对齐方式。根据该值按下 Toolbar 控件中适当的按钮。

详细信息 关于“按钮组”样式的详细信息,请参阅《语言参考》中的“Style 属性(Button 对象)”。

该应用实例中用到了如下对象:

创建用来设置文本对齐方式的工具栏

(下面仅描述较高层次的操作。更详细的信息,请参阅“使用 Toolbar 控件”。

  1. 设计时在与 Toolbar 控件相关联的 ImageList 控件中插入合适的图象。

  2. 通过“属性页”对话框创建 Button 对象。
  3. 在 ButtonClick 事件中,用 Select Case 语句确定按下了哪个按钮,并根据按钮设置合适的对齐方式。
  4. 在 RichTextBox 控件的 SelChange 事件中,用 Select Case 语句反映对齐方式。

在与 Toolbar 控件相关联的 ImageList 控件中插入合适的图象

如先前的 Toolbar 控件应用实例一样,必须首先将用于按钮组的合适图象插入 ImageList 控件中。

在设计时添加到 ImageList 控件中

  1. 用鼠标右键单击 ImageList 控件,并单击“属性”。

  2. 在“属性页”对话框中,单击“图像”选项卡。

  3. 单击“插入图片”以显示“选定图片”对话框,用该对话框可以找到所需的图象。本应用实例使用 Tools\Bitmaps\Tlbr_W95 目录中的图象。所用到的图象分别为:Lft.bmp、Cnt.bmp 和 Rt.bmp。

  4. 在“关键字”框中,为每个加入的图象键入合适的关键字。在本应用实例中,图象和它们的关键字如下表所示:
    图象 Key
    Lft.bmp “左”
    Cnt.bmp “中间”
    Rt.bmp “右”

  5. 用鼠标右键单击 Toolbar 控件,并单击“属性”,然后在“图象列表”下拉列表框中选择 ImageList 控件,将 ImageList 与 Toolbar 控件联系起来。

使用“属性页”对话框创建 Button 对象

在设计时,可以使用 Toolbar 控件的“属性页”对话框创建 Button 对象。关于该操作的特定信息,请参阅“Toolbar 控件应用实例 1:为 RTF 文本编辑器提供 OpenFile 按钮”。

创建有三个按钮的组,实际上必须创建五个按钮。其中的三个按钮被两个“分隔符”样式的 Button 对象包围起来。这五个按钮的 Style、Key、ToolTipText 和 Image 属性应按下表设置:

Button Style Key ToolTipText Image
1 tbrSeparator 〔无〕 〔无〕 〔无〕
2 tbrButtonGroup left 左对齐 1
3 tbrButtonGroup center 居中 2
4 tbrButtonGroup right 右对齐 3
5 tbrSeparator 〔无〕 〔无〕 〔无〕

用 Select Case 语句确定按下了哪个按钮,并根据该按钮设置合适的对齐方式

用户点击任何 Button 对象(Separator 或 Placeholder 样式的按钮除外)时,将会产生 ButtonClick 事件。使用带 Key 属性的 Select Case 语句,即可确定单击了哪个按钮,然后用 RichTextBox 控件的 SelAlignment 属性设置 RichTextBox 的对齐方式。在设置了对齐方式后,还要用 SetFocus 方法返回焦点到控件,代码如下:

Private Sub tlbRTF_ButtonClick(ByVal Button _
As Button)
   ' Select Case 语句处理 Key 属性,
   '以确定单击了哪个按钮。
   Select Case Button.Key
   Case "left"
      rtfData.SelAlignment = rtfLeft
      rtfData.SetFocus '将焦点返回到 RichTextBox.
   Case "center"
      rtfData.SelAlignment = rtfCenter
      rtfData.SetFocus
   Case "right"
      rtfData.SelAlignment = rtfRight
      rtfData.SetFocus
   Case Else
      '在这里处理其它情况。
   End Select
End Sub

用 Select Case 语句反映对齐方式

如果用户单击 RichTextBox 控件中的一行,Toolbar 按钮将反映出该行的对齐方式。这一点可以用 RichTextBox 控件的 SelChange 事件完成,如下面的代码所示。

Private Sub rtfData_SelChange()
   '当插入点改变时,设置 Toolbar
   '按钮以反映光标所在行的特性。
   Select Case rtfData.SelAlignment
   Case rtfLeft ' 0
      tlbRTF.Buttons("left").Value = tbrPressed
   Case rtfRight ' 1
      tlbRTF.Buttons("right").Value = tbrPressed
   case Else 'Null-没有按钮显示为压下状态。
      tlbRTF.Buttons("left").Value = tbrUnpressed
      tlbRTF.Buttons("center").Value = tbrUnpressed
      tlbRTF.Buttons("right").Value = tbrUnpressed
   End Select
End Sub

运行该代码

现在可以运行该工程了。用“打开文件”按钮(在“Toolbar 应用实例 1:为 RTF 文本编辑器提供 OpenFile 按钮)打开文件。还可以单击三个成组的按钮,改变文本的对齐方式。