Visual Basic创建工具栏
记事本是Windows中最常用的应用程序之一,其程序小、使用方便,是用户编辑文本的有力工具。编写本程序比较简单,且其中的大部分问题也都陆续介绍过。
建立好的用户界面,如图7.16所示。窗体界面中应包括:菜单、工具栏、公共对话框及一个文本框。这里并没有使用标准的TextBox控件,使用的是ActiveX中的RichTextBox控件(Microsoft Rich Textbox Control 6.0),RichTextBox控件不仅允许输入和编辑文本,同时还提供了标准TextBox控件未具有的、更高级的指定格式的许多功能,如改变部分文本字体、颜色、以及创建上标和下标、调整段落的格式等。
为了能动态显示已经打开文件的历史记录,需在文件菜单条中添加5个Visible属性为False的子菜单数组mnuFileH(0)~mnuFileH(4),分别表示分隔线及4个历史记录。然后建立一个通用过程,以便在文件打开、保存时调用:
Dim num As Integer
Private Sub Filehide()
mnuFileH(0).Visible = True
num = num + 1
If num > 4 Then
num = 1
mnuFileH(num).Visible = True
mnuFileH(num).Caption = CommonDialog1.FileName
Else
mnuFileH(num).Visible = True
mnuFileH(num).Caption = CommonDialog1.FileName
End If
End Sub

图7.16 记事本的设计界面
为了能够使文本框在任何时候都能充满窗口,应在窗体的Resize中设置RichTextBox1的尺寸,并将其ScrollBars属性值设为3-rtfBoth。
Private Sub Form_Resize()
With RichTextBox1
.Top = Toolbar1.Height
.Left = 0
.Height = Form1.ScaleHeight - Toolbar1.Height
.Width = Form1.ScaleWidth
End With
End Sub
文件菜单中新建、打开、保存、另存为以及退出的代码如下:
Private Sub mnuFileN_Click(Index As Integer)
Dim fso As New FileSystemObject, fil As TextStream
Select Case Index
Case 0
RichTextBox1.Text = ""
Form1.Caption = "未命名"
Case 1
CommonDialog1.DialogTitle = "打开"
CommonDialog1.ShowOpen
fname = CommonDialog1.FileName
If fname <> "" Then
RichTextBox1.Text = ""
Set fil = fso.OpenTextFile(fname)
b = ""
b = fil.ReadAll
RichTextBox1.Text = Left(b, 20000)
End If
Form1.Caption = fname
Call Filehide
Case 2
CommonDialog1.DialogTitle = "保存"
If Form1.Caption = "未命名" Or Form1.Caption = "" Then
CommonDialog1.ShowSave
fname = CommonDialog1.FileName
Call Filehide
Else
fname = Form1.Caption
End If
If fname <> "" Then
Set fil = fso.CreateTextFile(fname, True)
fil.Write RichTextBox1.Text
Form1.Caption = fname
End If
Case 3
CommonDialog1.DialogTitle = "另存为"
CommonDialog1.ShowSave
fname = CommonDialog1.FileName
If fname <> "" Then
Set fil = fso.CreateTextFile(fname, True)
fil.Write RichTextBox1.Text
Form1.Caption = fname
Call Filehide
End If
End Select
RichTextBox1.SetFocus
End Sub
Private Sub mnuFileExit_Click() '退出
Unload Me
End Sub
单击“文件”菜单历史记录选项的过程代码为:
Private Sub mnuFileH_Click(Index As Integer)
Dim fso As New FileSystemObject, fil As TextStream
fname = mnuFileH(Index).Caption
RichTextBox1.Text = ""
Set fil = fso.OpenTextFile(fname)
b = ""
b = fil.ReadAll
RichTextBox1.Text = Left(b, 20000)
Form1.Caption = fname
End Sub
“编辑”菜单各选项的单击事件代码为:
Private Sub mnuEditT_Click(Index As Integer)
Select Case Index
Case 0 '剪切
Clipboard.SetText RichTextBox1.SelRTF
RichTextBox1.SelRTF = ""
Case 1 '复制
Clipboard.SetText RichTextBox1.SelRTF
Case 2 '粘贴
RichTextBox1.SelRTF = Clipboard.GetText
Case 3 '清除
RichTextBox1.SelRTF = ""
Case 5 '字体
On Error Resume Next
CommonDialog1.ShowFont
If Err = cdlCancel Then
Else
RichTextBox1.SelFontName = CommonDialog1.FontName
RichTextBox1.SelFontSize = CommonDialog1.FontSize
RichTextBox1.SelBold = CommonDialog1.FontBold
RichTextBox1.SelItalic = CommonDialog1.FontItalic
RichTextBox1.SelUnderline = CommonDialog1.FontUnderline
RichTextBox1.SelStrikeThru = CommonDialog1.FontStrikethru
RichTextBox1.SelColor = CommonDialog1.Color
End If
Case 7 '全选
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
End Select
End Sub
“帮助”菜单的代码为:
Private Sub mnuHelpH_Click(Index As Integer)
Select Case Index
Case 0
CommonDialog1.ShowHelp
Case 2
MsgBox "Notpad 1.0 demo,2001,8", , "版本信息"
End Select
End Sub
工具栏中各选项代码为:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
n = Button.Index
Select Case n
Case 2
Call mnuFileN_Click(0)
Case 3
Call mnuFileN_Click(1)
Case 4
Call mnuFileN_Click(2)
Case 6
Call mnuEditT_Click(0)
Case 7
Call mnuEditT_Click(1)
Case 8
Call mnuEditT_Click(2)
Case 10
RichTextBox1.SelBold = Not RichTextBox1.SelBold
Case 11
RichTextBox1.SelItalic = Not RichTextBox1.SelItalic
Case 12
RichTextBox1.SelUnderline = Not RichTextBox1.SelUnderline
End Select
End Sub
