第六章 菜单和工具栏设计
复习要求
1.熟练应用菜单控件。
2.掌握Rich-TextBox控件。
3.理解Clipboard对象。
4. 熟练掌握StatusBar控件。
5. 熟练掌握工具栏控件。
6. 掌握图像列表控件。
复习内容
一、菜单控件
菜单(Menu)控件用于显示应用程序的自定义菜单。命令、子菜单和分隔符条都可以包括在菜单之中,每一个创建的菜单至多有四级子菜单。创建菜单控件使用菜单编辑器。使用菜单编辑器可以设置菜单控件的某些属性,菜单控件的属性都要显示在属性窗口中。为了显示菜单控件的属性,应在属性窗口上部的“对象”列表中选择菜单项名称。
在创建 MDI 应用程序时,当子窗体为活动窗体时,MDI子窗体上的菜单条将替换MDIForm对象上的菜单条。
菜单控件的常用属性有如下几种。
1.Caption
设置或返回菜单项的标题文字。在“标题”框中输入菜单控件的标题文字。为了对菜单项指定访问键,可在作为访问键使用的字母之前放置一个“&”符号;对于顶级菜单中的菜单项,可使用Alt+访问键字母快速选中;对于包含在菜单中的菜单命令,可直接通过访问键字母选中。为了创建分隔栏,可在“标题”框中输入单连字符“-”。
2.Checked
设置或返回一个布尔值,决定是否在菜单项旁边显示一个复选标记。为了在菜单项的左侧显示复选标记,使用菜单编辑器时应选中“复选”复选框。
3.Enabled
设置或返回一个布尔值,决定菜单项是否响应用户操作。使用菜单编辑器可使用“有效”复选框对该属性进行设置。
4.Index
当菜单项组成控件数组时,用于区分数组内的各个菜单控件。
5.Name
指定菜单控件的名称。
6.Shortcut
设置一个值,指定菜单项的快捷键。
7.Visible
设置或返回一个值,决定菜单项是否可见。
8.WindowList
设置或返回一个值,决定菜单控件是否维护当前 MDI子窗口的列表。
菜单控件只有一个事件,即 Click 事件。
二、RichTextBox控件
RichTextBox控件不仅允许输入和编辑文本,同时还提供了标准文本框控件所没有的、更高级的、指定格式的功能。
RichTextBox 提供了一些属性,对于控件文本,可以指定字符格式和段落格式。
注意:为了改变文本的格式,首先要选定它。只有选定的文本才能赋予字符和段落格式。使用这些属性,可把文本设置为粗体或斜体,改变其颜色,还可以创建上标和下标。另外,还可以设置左右缩进和悬挂式缩进等段落格式。
RichTextBox控件打开和保存文件的格式有RTF格式和ASCII文本格式两种。使用控件的 LoadFile和SaveFile方法可以直接读写文件,或使用与 Visual Basic文件输入/输出语句连接的,诸如 SelRTF和TextRTF 之类的控件属性打开和保存文件。
(一)RichTextBox控件的常用属性
1.FileName
返回或设置装入 RichTextBox控件的文件名。对此属性,只能指定文本文件或有效的.rtf文件名。
2.MaxLength
返回或设置一个值,指定 RichTextBox控件有无容纳字符数量的最大极限,如果有,则指出最大字符数量。
3.MultiLine
返回或设置一个值,指明 RichTextBox控件是否接受和显示多行正文。运行时此属性为只读。
4.RightMargin
返回或设置 RichTextBox控件中的文本右边距。
5.ScrollBars
返回或设置一个值,指定 RichTextBox控件是否带有水平的或垂直的滚动条。运行时此属性为只读。此属性有以下设置值:
0-rtfNone(默认)表示没有滚动条。
1-rtfHorizontal表示仅有水平滚动条。
2-rtfVertical表示仅有垂直滚动条。
3-rtfBoth表示同时具有水平和垂直滚动条。
6.SelAlignment
返回或设置一个值,控制 RichTextBox控件中段落的对齐方式。该属性设计时无效。此属性有以下设置值:
0-rtfLeft(默认)表示左对齐。
1-rtfRight表示右对齐。
2-rtfCenter表示居中对齐。
7.SelBold、SelItalic、SelStrikethru、SelUnderline
返回或设置 RichTextBox控件中选定文本的字体样式,包括粗体、斜体、删除线和下画线格式。这些属性设计时无效。
8.SelBullet
返回或设置一个值,决定在 RichTextBox控件中包含当前选择或插入点的段落是否有项目符号样式。在设计时无效。
9.SelCharOffset
返回或设置一个值,确定 RichTextBox控件中的文本是出现在基线上(正常状态),还是作为上标出现在基线之上或作为下标出现在基线之下。此属性在设计时无效。
10.SelColor
返回或设置用于决定 RichTextBox控件中文本颜色的值。在设计时无效。
11.SelFontName
返回或设置在 RichTextBox控件中用于显示当前选定的文本或用于显示刚从插入点所输入字符的字体。在设计时无效。
12.SelFontSize
返回或设置一个指定字体大小的值,该字体用于显示 RichTextBox控件中的文本。在设计时无效。
13.SelHangingIndent、SelIndent、SelRightIndent
返回或设置 RichTextBox控件中段落的页边距设置值,该控件不是包括当前选定的就是要在当前插入点添加。在设计时无效。
14.SelLength、SelStart、SelText
SelLength 返回或设置所选择的字符数;SelStart 返回或设置所选择的文本的起始点,如果没有文本被选中,则指出插入点的位置;SelText 返回或设置包含当前所选择文本的字符串;如果没有字符被选中,则为零长度字符串。这些属性在设计时是不可用的。
15.SelRTF
返回或设置 RichTextBox控件当前选择的文本(按.rtf格式)。在设计时无效。
16.SelTabCount、SelTabs
返回或设置 RichTextBox控件中文本的制表符数目及制表符的绝对位置。在设计时无效。
17.TextRTF
返回或设置 RichTextBox控件的文本,包括所有的.rtf 代码。 设置 TextRTF属性,将用新的字符串来取代 RichTextBox控件中的全部内容。
(二)RichTextBox控件的常用方法
1.Find
根据给定的字符串,在 RichTextBox控件中搜索文本,语法如下:
object.Find(string, start, end, options)
其中object表示 RichTextBox控件;参数 string指定要在控件中查找的字符串表达式。
参数 start 决定从何处开始搜索的整数字符索引,控件中的每一个字符都有一个可唯一标识的整数索引,控件中文本的第一个字符的索引是0;参数 end 决定在何处结束搜索的整数字符索引;参数 options 用来指定一个或多个可选功能常数的和,对参数 options的设置值如下。
(1)rtfWholeWord(2):确定匹配是基于整个单词还是单词的片段。
(2)rtfMatchCase(4):确定匹配是否基于指定字符串与字符串文本的大小写字体一致。
(3)rtfNoHighlight(8):确定匹配是否在指定的 RichTextBox控件中突出显示。
说明:通过把它们的值或常数相加或用 Or 运算符使这些值相结合的形式,可使用多个选项。
2.GetLineFromChar
返回 RichTextBox控件中含有指定字符位置的行的行号,不支持命名的参数,语法如下:
object.GetLineFromChar(charpos)
其中object表示 RichTextBox控件;参数 charpos是一个长整数,用以指定字符的索引,该字符所在行是要标识的。在 RichTextBox控件中,第一个字符的索引是 0。
3.LoadFile
向 RichTextBox控件加载一个.rtf 文件或文本文件,不支持命名的参数,语法如下。
object.LoadFile pathname, filetype
其中object表示 RichTextBox控件;参数 pathname 为字符串表达式,指定加载控件的文件路径和文件名;参数 filetype是可选的,用于确定装入文件的类型:rtfRTF(0) (默认)表示被加载的文件必须是一个合法的.rtf文件,rtfText(1)表示可加载任意一个文本文件。
4.SaveFile
把 RichTextBox控件的内容存入文件,不支持命名的参数,语法如下:
object.SaveFile pathname, filetype
其中object表示 RichTextBox控件;参数 pathname 为字符串表达式,指定保存控件内容文件的路径和文件名;参数 filetype是可选的,用于确定加载文件的类型,其设置值请参阅LoadFile方法。
5.SelPrint
将 RichTextBox控件中的格式化文本发送给设备进行打印,语法如下:
object.SelPrint(hDC)
其中object表示 RichTextBox控件;参数 hDC 为设备描述体,指定准备用来打印控件内容的设备。
SelPrint方法并不打印 RichTextBox控件中的文本,而是将格式化文本的一个备份发送给可以打印这个文本的设备。
三、状态栏控件
状态栏(StatusBar)控件提供窗体,该窗体通常位于父窗体的底部,应用程序通过这一窗体可以显示各种状态数据。 StatusBar最多能被分成16个Panel对象,这些对象包含在Panels集合中。
StatusBar控件由 Panel对象组成,每一个 Panel对象能包含文本和/或图片。控制个别面板的外观属性包括Width、Alignment(文本和图片的)和Bevel。此外,可以使用 Style属性七个值中的一个自动地显示公共数据,诸如日期、时间和键盘状态等。
四、Clipboard对象
Clipboard对象提供对系统剪贴板的访问,该对象用于操作剪贴板上的文本和图形,使得用户能够复制、剪切和粘贴应用程序中的文本和图形。在复制任何信息到 Clipboard对象中之前,应调用 Clipboard.Clear方法清除 Clipboard对象中的内容。所有 Windows 应用程序共享Clipboard对象,当切换到其他应用程序时剪贴板内容会改变。
Clipboard对象的常用方法有如下几种。
1.Clear
用于清除系统剪贴板的内容,语法如下:
Clipboard.Clear
2.GetData
用于从 Clipboard对象返回一个图形,不支持命名参数,语法如下:
Clipboard.GetData(format)
其中参数 format是可选的,它用于指定 Clipboard 图形的格式,必须用括号将该常数或数值括起来。如果参数 format为0或省略,GetData自动使用适当的格式。
3.GetText
用于返回 Clipboard对象中的文本字符串,不支持命名参数,语法如下。
Clipboard.GetText(format)
其中参数 format是可选的,它指定 Clipboard对象的格式,必须用括号将其值括起来。参数的设置值:vbCFLink(&HBF00)表示DDE 对话信息,vbCFText(1)(默认值)表示文本,vbCFRTF(&HBF01)表示 RTF 文件(.rtf)。
4.SetData
使用指定的图形格式将图片放到 Clipboard对象上,语法如下:
Clipboard.SetData data, format
其中参数 data指定被放置到 Clipboard对象中的图形,参数 format指定 Visual Basic识别的Clipboard对象格式。如果省略 format,则 SetData方法自动决定图形格式。
5.SetText
使用指定的 Clipboard 图像格式将文本字符串放到 Clipboard对象中,不支持命名参数,语法如下:
Clipboard.SetText data, format
其中参数 data 给出被放置到剪贴板中的字符串数据;参数 format是可选的,用于指定Visual Basic识别的剪贴板格式,其设置值请参阅 GetText方法。
五、工具栏控件
工具栏(Toolbar)控件包含一个 Button对象集合,该对象被用来创建与应用程序相关联的工具栏。一般来说,工具栏包含一些按钮,这些按钮与应用程序菜单中各项的按钮对应,工具栏为用户访问应用程序的最常用功能和命令提供了图形接口。
有了 Toolbar控件,就可以通过将 Button对象添加到 Buttons集合中来创建工具栏。每个 Button对象都可以有可选的文本或一幅图像,或者兼而有之,这些都是由相关联的ImageList控件提供的。可以在一个按钮上用 Image属性为每个Button对象加一幅图像, 或者用 Caption属性显示文本,或者二者兼而有之。在设计时可以使用工具栏控件的属性页将 Button对象添加到控件中。在运行时,可以通过调用 Add和Remove方法添加按钮或从 Buttons集合中删除按钮。
工具栏控件有以下常用属性。
1.Buttons
返回对 Toolbar控件的 Button对象集合的引用,语法如下:
Toolbar1.Buttons
可以使用标准集合方法(如Add和Remove方法)操作 Button对象。集合的每个元素都可以通过其索引(即Index属性)值来访问,也可以通过唯一关键字(即Key)属性值来访问。
2.ImageList
返回或设置与工具栏相关联的 ImageList控件,语法如下:
Toolbar1.ImageList [= Imagelist]
其中Imagelist 为对象引用,指定工具栏控件使用哪个 ImageList控件。
工具栏控件要使用 ImageList属性,必须先将 ImageList控件放在窗体上。在设计时,可以在工具栏控件的“属性页”对话框中设置 ImageList属性。为了将 ImageList在运行时与控件相关联,可以设置控件的 ImageList属性为要用的 ImageList控件,例如:
Set Toolbar1.ImageList = ImageList1
工具栏控件有一个 ButtonClick 事件,该事件当用户单击工具栏控件内的按钮对象时发生。为了给工具栏控件编程,将代码添加到 ButtonClick 事件中,以便对已选定的按钮做出反应。该事件过程的语法如下:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
其中参数 Button表示对被单击的 Button对象(工具栏按钮)的引用。
单个 Button对象会对 ButtonClick 事件做出反应,为了对这种反应编程,可以使用button参数值。例如,下列代码用 Button对象的 Key属性来确定合适的动作。
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key Case "Open" CommonDialog1.ShowOpen Case "Save" CommonDialog1.ShowSave End Select End Sub
六、图像列表控件
图像列表(ImageList)控件包含 ListImage对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList控件不能独立使用,只是作为一个便于向其他控件提供图像的资料中心。
在设计时,可以用 ImageList控件属性页对话框的“图像”选项卡来添加图像。在运行时,可以用 Add方法给 ListImages集合添加图像。
ImageList控件的作用犹如图像的储藏室,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像 Picture对象的控件,也可以是特别设计的、用于绑定ImageList控件的 Windows 通用控件。ListView、ToolBar、TabStrip、Header、ImageCombo和TreeView控件。为了与这些控件一同使用 ImageList控件,必须通过一个适当的属性将特定的 ImageList控件绑定到第二个控件。