TabStrip 控件用来创建包含多个选项卡的对话框。选项卡之间通常具有一定关系,属于某一大类,因此需要将它与其它选项卡放在同一对话框中。在该应用实例中,创建了用来设置 RichTextBox 的字体和缩进的选项卡式对话框。
下面的代码中使用了如下对象:
创建选项卡式对话框
本应用实例需要两个窗体:名为“frmRTF”的包含 RichTextBox 控件,另一个名为“frmTab”的包含 TabStrip 控件。
创建两个 Form 对象
注意 必须先将 RichTextBox (RichTx32.ocx) 装入工具栏。详细信息请参阅“加载 ActiveX 控件”。
还必须编写显示第二个窗体的代码。一个简单的办法是在第一个 Form 对象 (frmRTF) 的 DblClick 事件中使用 Show 方法,如下所示:
Private Sub Form_DblClick()
frmTab.Show
End Sub
在设计时和运行时均可创建 Tab 对象。在本应用实例中,要在设计时创建两个选项卡。用鼠标右键单击 TabStrip 控件,并单击“属性”以显示“属性页”对话框。然后单击“选项卡”选项卡,并单击“插入选项卡”两次。请注意为它们赋予合适的标题:“字体”和“缩进”。
TabStrip 控件通过管理 Tab 对象实现其功能。每个 Tab 对象与出现在该选项卡的客户区中的容器控件相关联。用控件数组创建这些容器控件最为方便。本应用实例中,在 TabStrip 控件所在的窗体中绘制 Frame 控件,并命名为“fraTab”。
创建控件数组
在名为“fraTab(0)”的控件中绘制 ComboBox 控件,并将其命名为“cmbFonts”。用下面的代码可以将系统中可以使用的所有字体列入该 ComboBox:
Private Sub Form_Load() Dim i '
声明变量。'
确定字体的数目。For i = 0 To Printer.FontCount - 1
'
将每种字体加入列表框中。cmbFonts.AddItem Printer.Fonts(I)
Next i
cmbFonts.ListIndex = 0
End Sub
用下面的代码为 RichTextbox 控件设置 SelFontName 属性:
Private Sub cmbFonts_Click()
frmRtf.rtfData.SelFontName = cmbFonts.Text
End Sub
在名为“fraTab(0)”的 Frame 控件中绘制两个 OptionButton 控件。将第一个 OptionButton 控件命名为“optNormal”,并将其 Caption 属性设置为“Normal”。将第二个控件命名为“optBullet”,并将其 Caption 属性设置为“Bullet”。这些控件的代码分别将 SelBullet 属性设置为 True 或 False。代码分别如下:
Private Sub optBullet_Click() 'Form
对象的ScaleMode
被设置为“缇”。frmRTF.rtfData.BulletIndent = 500
frmRTF.rtfData.SelBullet = True
End Sub
Private Sub optNormal_Click()
frmRTF.rtfData.SelBullet = False
End Sub
为了在客户区上放置 Frame 控件,可以在 Form 对象的 Load 事件中使用 Move 方法,如下所示:
Private Sub Form_Load() 'TabStrip
名为“tabRTF
”。'Frame
控件名为“fraTab
”。For i = 0 To fraTab.Count - 1
With fraTab(i)
.Move tabRTF.ClientLeft, _
tabRTF.ClientTop, _
tabRTF.ClientWidth, _
tabRTF.ClientHeight
End With
Next I
'
将第一个fraTab
控件显示在最前面。fraTab(0).ZOrder 0
End Sub
可以用 SelectedItem 属性确定被单击的 Tab 对象。该属性返回被单击的选项卡的引用。然而,Tabs 集合是基于 1 的集合(集合下标以 1 开始),而 fraTab 数组是基于 0 的集合。要使它们同步,需要将 Index 减 1,如下所示:
Private Sub tabRTF_Click()
fraTab(tabRTF.SelectedItem.Index - 1).ZOrder 0
End Sub
提示 在设计时,通过设置 Frame 控件数组的 Index 属性,可以将其变为基于 1 的数组。这样上述代码就变为:
fraTab(tabRTF.SelectedItem.Index).ZOrder 0
全部代码显示如下:
Private Sub Form_Load() Dim i As Integer'
声明变量。'
确定字体的总数。For i = 0 To Printer.FontCount - 1
'
将每个字体加入列表框。cmbFonts.AddItem Printer.Fonts(i)
Next i
cmbFonts.ListIndex = 0
'TabStrip
名为“tabRTF
”。'Frame control
名为“fraTab
”。For i = 0 To fraTab.Count - 1
With fraTab(i)
.Move tabRTF.ClientLeft, _
tabRTF.ClientTop, _
tabRTF.ClientWidth, _
tabRTF.ClientHeight
End With
Next i
'
将第一个fraTab
控件显示在最前面。fraTab(0).ZOrder 0
End Sub
Private Sub cmbFonts_Click()
frmRTF.rtfData.SelFontName = cmbFonts.Text
End Sub
Private Sub optBullet_Click()
frmRTF.rtfData.BulletIndent = 500
frmRTF.rtfData.SelBullet = True
End Sub
Private Sub optNormal_Click()
frmRTF.rtfData.SelBullet = False
End Sub
Private Sub tabRTF_Click()
fraTab(tabRTF.SelectedItem.Index - 1).ZOrder 0
End Sub
下面的代码放入名为“frmRTF”的窗体中。
Private Sub Form_DblClick()
frmTab.Show
End Sub