admin 管理员组

文章数量: 887031


2023年12月20日发(作者:tradingview中文版)

下拉式菜单设计

1.下拉式菜单的组成(如图4.2所示)

(1)下拉式菜单由主菜单、主菜单项、子菜单等组成。

(2)子菜单可分为一级子菜单、二级子菜单直到五级子菜单。

(3)每级子菜单由菜单项、快捷键、分隔条、子菜单提示符等组成。

图4.2 下拉式菜单的组成

①菜单项:所有子菜单的基本元素就是菜单项,每个菜单项代表一条命令或子菜单标题。

②分隔条:分隔条为一条横线,用于在子菜单中区分不同功能的菜单项组,使菜单项功能一目了然,并且方便操作。

③快捷键:为每个最底层的菜单项设置快捷键后,可以在不用鼠标操作菜单项的情况下,通过快捷键直接执行相应的命令。

④热键:热键是在鼠标失效时,为用户操作菜单项提供的按键选择,使用热键时,须与键同时使用。

⑤子菜单提示符:如果某个菜单项后有子菜单,则在此菜单项的右边出现一个向右指示的小三角子菜单提示符。

2.菜单编辑器的启动

执行菜单命令:工具 | 菜单编辑器,即可打开菜单编辑器,如图4.3所示。

菜单编辑器分为上下两部分:上半部分用于设置菜单项的属性,下半部分用于显示用户设置的主菜单项与子菜单项内容。

图4.3 菜单编辑器

3.菜单编辑器的使用方法

(1)标题栏(Caption):输入菜单项的标题、设置热键与分隔条;

①标题:直接输入标题内容,如“文件”。

②热键:在菜单项中某个字母前输入“&”后该字母将成为热键,如在图4.3的文件主菜单项中输入“文件(&F)”。

③分隔条:在标题框中键入一个连字符“-”即可。

(2)名称栏(Name):用于输入菜单项内部惟一标识符,如图4.3 “File”等,程序执行时不会显示名字栏内容。

注意:分隔符也要输入名称,且不能重复命名。

(3)快捷键下拉列表框(Shortcut Key):用于选择菜单项的快捷键,用鼠标单击列表框的下拉按钮,在列表框中可选择不同的快捷键。

(4)下一个按钮(Next):当用户将一个菜单项的各属性设置完后,单击“下一个”按键可新建一个菜单项或进入下一个菜单项。

(5)“←”与“→”按钮:用于选择菜单项在菜单中的层次位置。

单击“→”按钮将菜单项向右移编入下一级子菜单。

单击“←”按钮将菜单项向左移编入上一级子菜单。

(6)插入按钮(Insert):用于在选定菜单项前插入一个新的菜单项。使用时应先在图4.3所示菜单编辑器的下半部分选定菜单项,然后按“插入”按钮,并输入新菜单项的标题、名称等内容。

(7)删除按钮(Delete):用于删除指定菜单项。先在菜单编辑器的下半部分选择要删除的菜单项,然后按“删除”按钮。

(8)“↑”和“↓”按钮:用于改变菜单项在主菜单与子菜单中的顺序位置。

(9)复选框(Checked):若某菜单项的复选框被选中,则该菜单项左边加上检查标记“√”,表示该菜单项是一个被选项。

(10)有效框(Enabled):当菜单项的有效框被选中时,程序执行时,该菜单项高亮度显示,表示用户可以选择该菜单项。当菜单项的有效框未被选中时,程序执行后,该菜单项灰色显示,表示用户不能选择该菜单项。

(11)可见框(Visible):菜单项的可见框被选中,则该菜单项可见,否则不可见。

(12)显示窗口列表复选框:若某菜单项的“显示窗口列表”复选框有效,则该菜单项成为多文档窗体的“窗口”,在该“窗口”中将列出所有已打开子窗体的标题名称。

【例4.1】设计一个简易文本编辑器的下拉式菜单,如图4.2所示,设计要求如表4.1。

表4.1 简易文本编辑器的下拉式菜单结构

设计步骤如下:

(1)在e:盘新建目录e:vbprogramexemple4_1,用于保存工程文件与窗体文件等内容。

(2)在VB中新建一个工程与一个窗体。将窗体的Caption属性改为“下拉式菜单设计示例”,Name属性改为Form_ex41。

(3)启动菜单编辑器

在VB中执行菜单命令:工具 |菜单编辑器,进入图4.2所示菜单编辑器对话框界面。

(4)使用菜单编辑器建立菜单

①创建主菜单项

标题栏中输入“文件(&F)”(F键成为热键),名称栏中输入“File”。按“下一个”按钮将产生新的菜单项。

说明:若不需给“文件”主菜单项设置热键,只要取消标题栏中的“(&F)”即可。

②创建子菜单项

标题栏中输入“新建”,名称栏中输入“New”,在快捷键栏中选择Ctrl+N,Ctrl+N成为“新建”菜单项的快捷键。单击“→”按钮,使“新建”菜单项向右缩进4个点。单击“下一个”按钮产生新的菜单项。继续创建“打开”、“保存”等子菜单项。

说明:若再单击“→”按钮,使菜单项向右再缩进4个点(共8个点),表示该菜单项为二级子菜单项。单击n次“→”单击,使菜单项向右再缩进4*n个点,该菜单项成为n级子菜单项。若要使n级子菜单项升级为n-1级子菜单项,只需单击“←”按钮即可。当菜单项向左移动到左边框线时便成为主菜单项。

若不想给“新建”菜单项设置快捷键Ctrl+N,只需在快捷键栏中选择(None)即可。

③创建分隔条

要使菜单项成为分隔条,只需在标题栏中输入“-”即可,但名称栏必须输入内容,如Separator1等。

(5)建立菜单项事件过程

对“新建”、“打开”、“保存”与“退出”4个菜单项编写事件过程。

在窗体设计器中,选择并单击“新建”菜单项,进入代码编辑器,输入如下代码:

Private Sub New_Click()

Print "新建文件"

End Sub

选择并单击“打开”菜单,进入代码编辑器,输入如下代码:

Private Sub Open_Click()

Print "打开文件"

End Sub

选择并单击“保存”菜单,进入代码编辑器,输入如下代码:

Private Sub Save_Click()

Print "保存文件"

End Sub

选择并单击“退出”菜单,进入代码编辑器,输入如下代码:

Private Sub Exit_Click()

End

End Sub

(6)保存工程与窗体文件

执行菜单命令:文件 | 保存工程,将工程文件保存在目录e:vbprogramexample4_1中。工程文件名称为ex4_。窗体文件名称为Form_。

(7)编译和运行程序

弹出式菜单设计

enu方法的调用格式

[窗体名.] PopupMenu <菜单名> [,flags][,x][,y][,boldcommand]

说明:

(1)窗体名表示要弹出菜单的窗体名称,默认为当前窗体。

(2)菜单名是要弹出的菜单名称,一般至少包含一个子菜单项的主菜单项名称。

(3)flags为可选参数,用于设定菜单弹出的位置和行为,位置常数和行为常数分别如表4.2和表4.3所示。若同时指 定这两个常数,可用“逻辑或”运算符(Or)将二者结合起来,例如:4 or 2。

表4.2 Flags参数中的位置常数

表4.3 Flags参数中的行为常数

(4)x和y两个可选参数用于指定显示弹出式菜单的位置。如果该参数省略,则使用鼠标的坐标。

(5)boldname参数指定弹出式菜单中的菜单控件的名字,用以显示其黑体正文标题。如果该参数省略,则弹出式菜单中没有以黑体字出现的控件。

PopupMenu方法常在控件对象的鼠标按下事件过程MouseDown()中调用,下面举例说明。

2. 弹出式菜单应用举例

【例4.2】设计一个带有下拉式菜单、弹出式菜单的文本编辑器,其工作界面如图4.4所示。设计要求如下。

在例4.1的窗体中添加一个RichTextBox控件作为图文编辑器,用弹出式菜单实现文本编辑器的“复制、剪切、粘贴”功能,程序设计过程如下。

图4.4 弹出式菜单示例

(1)打开例4.1所建的工程,另存到e:vbprogramexemple4_2,工程文件名称为ex4_,窗体文件名称为Form_。具体操作过程如下。

①新建文件目录e:vbprogramexemple4_2 。

②将工程ex4_另存为ex4_

执行菜单命令:文件 | 工程另存为,选择e:vbprogramexemple4_2 目录,输入工程名为ex4_。

③将窗体Form_ 另存为Form_

执行菜单命令:文件 | Form_ 另存为,选择e:vbprogramexemple4_2目录,输入窗体名为Form_ | 保存;将窗体的Name属性改为Form_ex42,Caption属性改为“下拉式菜单与弹出式菜单设计示例”。

(2)在工具箱中添加图文编辑器RichTextBox

执行菜单命令:工程 | 部件 | 使Microsort Rich TextBox Control 6.0(SP6) 复选框有效;将RichTextBox控件添加到工具箱中。

在工具箱中双击RichTextBox,将RichTextBox放入窗体设计器,放大控件尺寸,如图4.4所示。RichTextBox是VB提供的一种图文编辑控件,具有类似于Word的文字编辑功能。

(3)编写RichTextBox控件鼠标按下事件处理过程

编写在RichTextBox控件中单击鼠标右键出现弹出式菜单的事件处理过程,如图4.4 所示。该功能可通过在RichTextBox控件的鼠标按下事件MouseDown()中调用窗体Form_ex42的PopupMenu方法来实现。

在代码窗口中的对象栏中选择RichTextBox控件,在事件栏中选择鼠标按下事件MouseDown,输入事件处理程序如下:

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = 2 Then'表示若用户单击鼠标右键

Form_enu Edit, 2, x, y '则窗体Form_ex42调用PopupNume方法

End If '该方法将使用主菜单项Edit中的“剪切、复制、粘贴”

End Sub'一级子菜单作为弹出式菜单

(4)编写剪切、复制与粘贴的事件处理过程。

在代码窗口中对象栏中依次选择Cut 、Copy、Paster子菜单对象,在事件栏中选择单击Click事件,输入事件过程如下:

Private Sub Cut_Click()

t t '将RichTextBox1所选择文本存入剪切板

t = "" '清除RichTextBox1所选择文本

End Sub

Private Sub Copy_Click()

t t '将RichTextBox1所选择文本存入剪切板

End Sub

Private Sub Paste_Click()

t = t '将剪切板中文本复制到RichTextBox1

End Sub

(5)保存工程与窗体文件

(6)运行程序

运行程序后,用鼠标右击RichTextBox1控件,则出现弹出式菜单,可进行文本的剪切、复制与粘贴操作。

工具栏设计

工具栏是标准Windows界面的组成元素之一,利用工具栏控件ToolBar可以很方便地将经常使用的命令建成工具栏按钮,并为按钮指定图像、文字与提示,构成功能全面的应用程序工具栏。一般工具栏控件ToolBar需要与图像列表控件ImageList配合使用,由ImageList控件提供所需要显示的工具栏按钮图像。

ImageList控件

1、作用:向其他控件(如ToolBar、ListView和Treeview)提供图像。

2、使用方法

(1)在工具箱中添加图像控件ImageList

工程 | 部件 |使Microsoft Windows Common Control 6.0复选框有效;

(2)在窗体内添加ImageList控件

在工具箱中双击ImageList控件。

(3)向ImageList控件添加图片

①用鼠标右击ImageList控件,在弹出式菜单中选择属性进入属性页对话框,选择图像选项卡,单击“插入图片”按钮,在对话框中选择图像文件(.bmp或. ico)添加到ImageList控件中去。

② 在关键字栏中输入关键字(Key),关键字必须为该图片惟一标识符。索引(Index)为图像的惟一序号,一般由系统自动设置。在后面的程序设计中,其它控件将使用索引(Index)或关键字(Key)来引用所需的图像。

重复①、②两步,可以添加多个图片。如添加“复制”与“粘贴”图像。

图4.5 添加图像后的图像选项卡

观看视频

图 4.6 VB中图像文件存放目录

说明,VB图像文件存放目录为:Program FilesMicrosoft Visual StudioCommonGraphics

如图4.6所示。在上述目录中还有5个子目录,用于存放5种不同类型的图形与图像文件,这5个子目录与文件类型的对应关系如表4.4所示。

表4.4 VB子目录与文件类型的对应关系

在Bitmaps目录中还可继续打开子目录OffCtlBrSmallColor,从该子目录中可将、、图像插入到ImageList控件中去,输入关键字Copy、Cut、Paste,则ImageList控件将包含剪切、复制与粘贴三个位图,如图4.5所示。这三个图标可供ToolBar、ListView和Treeview等控件使用。

ToolBar控件

1.概述

(1)添加到工具箱:使用与ImageList控件同样的方法将ToolBar控件添加到工具箱中。

(2)添加到窗体:在工具箱中双击ToolBar控件。

(3)作用:ToolBar控件用于设计窗体中工具栏,工具栏通常应放窗体菜单栏的下方,工具栏应包含能执行常用命令的一些快速按钮。

2.ToolBar控件属性

(1)ToolBar控件的属性页

用鼠标右击ToolBar控件,在弹出式菜单中选择属性,则出现图4.7所示属性页对话框界面。对话框共有通用、按钮与图片三个选项卡,三个选项卡的作用如下。

图4.7 ToolBar控件的属性页对话框

通用选项卡用于设置工具栏的样式、外观、鼠标指针、按钮宽度、图像列表等。

按钮选项卡用于按钮插入、删除、索引、标题、样式等设置。

图片选项卡用于鼠标进入工具栏变成图形化的鼠标所需要的图片。

(3)ToolBar控件的常用属性

① ImageList属性(图像列表)

该属性用于设置与ToolBar相关联的ImageList控件。属性设置后,将由关联ImageList控件向ToolBar控件提供按钮图像。

④ ShowTips属性(显示提示)

该属性用于确定在程序运行过程中,鼠标移动到工具栏按钮时是否出现按钮飞行提示。属性值为True时,出现按钮飞行提示;属性值为False时,不出现按钮飞行提示。

⑤ Visible属性(工具栏可见)

属性值为逻辑值,当值为True时工具栏可见,值为False时工具栏隐藏。

⑥ Enabled属性(有效)

属性值为逻辑值,当值为True时工具栏可用,值为False时工具栏变灰色不能用。

⑦ Style 属性(样式)

该属性用于设置工具栏的样式。

0-tbrStandard 表示标准样式,1-tbrFlat 表示平面样式。

用ToolBar与ImageList设计工具栏

工具栏控件ToolBar一般需要与图像列表控件ImageList配合使用,由ImageList控件提供工具栏按钮图像。工具栏的设计步骤如下。

(1)向工具箱中添加ToolBar控件与ImageList控件;

(2)向窗体内添加ToolBar控件与 ImageList控件;

(3)向ImageList控件添加要使用的图像;

(4)将ToolBar与ImageList控件相关联;

(5)创建工具栏快捷按钮,即Button对象;

(6)编写ButtonClick事件过程。

有关(1)、(2)、(3)步已在前文中介绍过,本节主要讲述(4)、(5)、(6)步的内容。

1、将ImageList与ToolBar控件相关联

用鼠标右击ToolBar控件,在弹出式菜单中选择属性进入属性页对话框,选择通用选项卡,在图像列表栏中选择ImageList1,此时ToolBar控件可使用ImageList1中的图像。

2、按钮选卡属性

在窗体内右击ToolBar控件,在弹出式菜单中选择属性进入属性页对话框,选择按钮选项卡,如图4.8 所示。在图4.8中可设置按钮选项卡的属性。

图4.8 ToolBar控件中添加按钮对话框

(1)索引(Index)

索引是工具栏中按钮的惟一序号,从1开始自动编号。用户可用索引框右边的左右向箭头选择不同索引号的按钮,进行编辑处理。

(2)标题(Caption)

标题用于显示按钮标题内容。允许用户不设置标题,此时按钮只有图像而没有标题,建议在工具提示文本栏中输入按钮标题飞行提示。

(3)关键字(Key)

关键字用于惟一标识一个按钮,是程序代码中识别按钮的标志。

(4)值(Value)

设置按钮的初始状态。

0-tbrUnpress 设置初始态为按钮保持原状;

1-tbrPressed设置初始态为按钮保持按下状态。

(5)样式(Style)

按钮样式用于选择按钮的六种样式,各类按钮的功能介绍如下。

①普通按钮(0-tbrDefault)

当普通按钮按下后,在完成功能后会自动弹出恢复原状。若按钮功能不依赖于其它功能,应使用普通按钮。

②开关按钮(1-tbrCheck)

每按一次键,在“按下”与“弹起”开关状态切换。当按钮表示某种开关时,

可考虑使用开关按钮。

③编组按钮(2-tbrButtonGroup)

选择编组的所有按钮中,当一个按钮处于按下状态时,其它按钮处于弹起状态。当一组按钮功能相互排斥时,可考虑使用编组按钮。

④分隔按钮(3-tbrSeparator)

分隔按钮是宽度为8个像素点的按钮,只能作为两个按钮之间的分隔符使用,没有任何实际执行命令的功能。

⑤占位按钮(4-tbrPlaceholder)

占位按钮仅在工具栏中占用一定空间,以便显示其它控件。本身不具备命令执行功能。

⑥菜单按钮(5-tbrButtonDrop)

菜单按钮是带下拉菜单的按钮,这类按钮由一个普通按钮与一个下拉按钮构成,当单击下拉按钮时会出现下拉菜单。

(6)工具提示文本

工具提示文本用于设置工具栏按钮的飞行提示内容。当通用选项卡中的“显示提示”复选框有效时,将鼠标移到工具栏按钮上会显示飞行提示内容。

(7)图像(Image)

图像用于设置按钮显示的图像,当ToolBar控件与ImageList控件相关联后,在图像栏中输入ImageList控件中图像的索引号。

3.ToolBar控件中添加按钮

单击“插入按钮”后,“索引”框中出现数字1,依次输入按钮标题(如“剪切”)、关键字(如 Cut)、图像(如 1)等项内容后,再单击“插入按钮”继续录入其它按钮,如“复制”与“粘贴”,单击“确定”按钮结束添加按钮的操作。

4.ToolBar控件常用事件

TollBar控件常用事件为单击工具栏事件ButtonClick()。工具栏由多个按钮组成,共用一个ButtonClick()事件过程,在事件过程中使用按钮的关键字Key为识别条件编写多路分支程序,执行按钮对应的事件处理程序。现举例说明如下。

【例4.3】设计一个带有下拉式菜单、弹出式菜单与工具栏的文本编辑器,其工作界面如图4.8所示。设计要求如下。

在例4.2的工程中增加工具栏,放置三个普通按钮,分别用于RichTextBox控件中被选文本的复制、剪切、粘贴功能。在工具栏上放置二个组合框ComboBox,为RichTextBox控件中文本选择字体与字号,如图4.9所示。程序设计步骤如下。

图4.9 菜单与工具栏设计示例

(1)新建文件目录

新建文件目录e:vbprogramexemple4_3。

(2)另存工程文件

打开例4.2所建工程ex4_,将工程文件ex4_另存到新建目录中,命名为ex4_ ,将窗体文件Form_另存为Form_。具体方法请读者参见例4.2。将窗体的Name属性改为Form_ex43,Caption属性改为“菜单与工具栏设计示例”。

(3)窗体添加工具栏

在窗体设计中放置一个ToolBar控件

执行菜单命令:工程 | 部件| 使Microsoft Windows Common Control 6.0复选框有效;

将ToolBar(工具栏控件)、StatusBar(状态栏控件)、ImageList(图像列表)等9个控件添加到工具箱中去。在工具箱中双击ToolBar控件与ImageList控件,将这两个控件添加到窗体中。

(4)添加ImageList控件

在ImageList控件中添加剪切、复制与粘贴三个图像;关键字为Cut、Copy、Paste。

(5)工具栏中添加按钮

将ToolBar控件通用选项卡中的图像列表属性设置为ImageList1。使ToolBar控件与ImageList1相关联。在ToolBar控件按钮选项卡中添加三个普通按钮,其标题为“剪切”、“复制”、“粘贴”,关键字分别为Cut、Copy、Paste;图像分别为1、2、3。提示为“剪切”、“复制”、“粘贴”。

(6)编写单击工具栏按钮事件过程

双击ToolBar工具栏控件,输入单击工具栏按钮事件过程。

Private Sub Toolbar1_ButtonClick(ByVal Button As )

Select Case

Case "Cut"

Call Cut_Click ‘单击剪切按钮,调用例4.2中的剪切过程Cut_Click

Case "Copy"

Call Copy_Click ‘单击复制按钮,调用例4.2中的复制过程Copy_Click

Case "Paste"

Call Paste_Click ‘单击粘贴按钮,调用例4.2中的粘贴过程Paste_Click

End Select

End Sub

在上述过程的形参表中,形参Button用于接收用户单击的工具栏按钮,并用表示工具栏按钮关键字的Key值。通过Select语句判断用户按下的按钮,并调用相应的Cut_Click、Copy_Click、Paste_Click过程(见例4.2)进行剪切、复制与粘贴处理。

(7)工具栏中添加两个存放字体与字号的Combo控件

在工具栏中放置两个Combo控件,将其Name属性改为Combo_FontName 与Combo_FontSize,分别用于存放字体与字号。使用Form_Load事件对Combo_FontName 与Combo_FontSize进行初始化赋值。

在初始过程中,用Combo_FontName控件的AddItem方法,将系统屏幕字体数组(I)依次赋给Combo_FontName控件,用Combo_FontSize控件的AddItem方法,将字号1~80赋给Combo_FontSize。事件处理过程如下。

Private Sub Form_Load()

Dim I As Integer

For I = 0 To unt - 1

Combo_m((I)) '将系统屏幕字体赋给Combo_ FontName

Next I

Combo_ = '将RichTextBox1字体赋给Combo_ FontName

For I = 1 To 80

Combo_m( I)'给Combo_ FontSize赋值1~80

Next I

Combo_ = '将当前RichTextBox1控件的字体大小作为

End Sub '初值赋给Combo_FontSize

(8)编写单击Combo_ FontName组合列表框事件过程

在该事件过程,将Combo_ 中字体值赋给RichTextBox1被选文本的字体属性SelFontName,从而改变RichTextBox1中被选文本的字体。

Private Sub Combo_ FontName _Click()

tName = Combo_ '改变RichTextBox1所选文本的字体

End Sub

(9)编写单击Combo_ FontSize 组合框列表事件过程

在该事件过程,将Combo_ 中字号值赋给RichTextBox1被选文本的字号属性SelFontSize,从而改变RichTextBox1中被选文本的字体大小。

Private Sub Combo_ FontSize _Click()

tSize = Combo_ '改变RichTextBox1所选文本

字体大小

End Sub

(10)程序运行

当程序运行后,先在RichTextBox1文本编辑框中输入“中华人民共和国”,选中“中华人民共和国”,用鼠标单击Combo_ FontName的下拉按钮选择“楷体”,单击Combo_ FontSize的下拉按钮选择40号字体,再单击“复制”按钮,打回车使光标移到下一行,再单击“粘贴”按钮,则40号楷体的“中华人民共和国”被复制到下一行,如图4.9所示。最后应保存工程文件与窗体文件。

状态栏设计

状态栏是Windows风格程序界面的组成部分,用于Windows窗体下方状态信息的显示,如当前光标位置、日期、时间等状态信息。Visual Basic中的状态栏是用状态栏控件StatusBar设计的,下面介绍StatusBar控件的概况、属性与应用举例

一、StatusBar控件的概述

1、作用

用于设计窗体状态栏。状态栏由一组连续的窗格(最多16个)对象组合而成,用于显示应用程序当前的工作状态。其位置通常在应用程序窗体的底部。

2、添加到工具箱

使用与ImageList控件同样的方法将StatusBar控件添加到工具箱中。

3、添加到窗体

在工具箱中双击StatusBar控件,则该控件被自动放置到窗体下方。

二、 StatusBar控件的属性

1. StatusBar控件属性

用鼠标右键单击StatusBar控件,在弹出菜单中选择属性,则屏幕显示属性页如图4.10所示。

状态栏的属性页由通用、窗格、字体、图片四个选项卡组成。状态栏的属性主要集中在“窗格”选项卡(Panel)中,StatusBar控件第i个窗格属性可用Panels (i)表示,Panels (i)下还有若干子属性,如Text、Key、MinWidth、Alignment、Style、Bevel,这些子属性在程序代码中的表达方法为:(i).Text,…,(i).Bevel。现分别讲述这些子属性。

(1)索引(Index)

索引属性用于表示窗格的惟一序号,其值是用户新建窗格时由系统自动设置的。用户可通过索引右边的“←”、“→”按钮选择不同索引对应的窗格。

(2)文本(Text)

文本用于设置窗格要显示的内容。

(3)工具提示文本

工具提示文本用于设置状态栏窗格的飞行提示内容。当通用选项卡中的“显示提示”复选框有效时,将鼠标移到状态栏窗格上会显示飞行提示内容。

(4)关键字(Key)

关键字用于惟一标识窗格。

(5)最小宽度(MinWidth)

最小宽度是指当前窗格的最小宽度,用户可根据实际情况设置最小宽度值,调整各窗格的宽度。

(6)对齐(Alignment)

参数0-sbrLeft、1-sbrCenter、2-sbrRight分别表示窗格中的文本左对齐、居中、右对齐。

(7)样式(Style)

“样式”(Style)属性值决定了状态栏窗格的显示方式,共有7种显示方式,如表4.5所示。可显示相关按键的状态、系统日期与系统时间,也可显示用户自定义信息。

表4.5窗格样式Style的取值与含义

(8)斜面(Bevel)

参数0-sbrNoBevel、1-sbrInset、2-sbrRaised分别表示窗格无凹凸、凹下、凸起三种状态。

2. StatusBar控件中添加窗格

在属性页的窗格选项卡中,用“插入窗格”按钮可向状态栏中添加窗格,用户需设置每个新窗格的子属性。当窗格不要时可用“删除窗格”按钮删除窗格。

图4.10 状态栏的属性页

【例4.4】设计一个带有下拉式菜单、弹出式菜单、工具栏与状态栏的文本编辑器,其工作界面如图4.11所示。设计要求如下。

在例4.3的工程中添加状态栏控件StatusBar,状态栏共有4个窗格,分别显示当前光标的坐标位置(x、y)、文本编辑器的状态(编辑或只读)、插入状态、日期与时间,如图4.11所示。程序设计步骤如下。

图4.11 菜单、工具栏与状态栏设计示例

(1)新建文件目录与另存工程文件

新建文件目录e:vbprogramexemple4_4,打开例4.3所建工程ex4_,将工程文件ex4_另存到新建目录中,命名为ex4_ ,将窗体文件Form_另存为Form_。窗体的Name属性改为Form_ex44,Caption属性改为“菜单、工具栏与状态栏设计示例”。

(2)窗体中添加状态栏

双击工具箱中的StatusBar控件,将状态栏控件StatusBar放置在窗体下方。

(3)设置状态栏属性

用鼠标右击状态栏,打开状态栏的属性页。在“窗格”选项卡中添加4个窗格,其“文本”属性分别为:x:0,y:0、状态:编辑、插入状态、日期:时间;分别设置“最小宽度”属性为:1400、1400、1400、3000;样式属性分别为:0-sbrText、0-sbrText、3-sbrIns 、0-sbrText。

(4)窗体上添加时间控件Timer

在工具箱中双击Timer控件,可将Timer控件放置在窗体中。设置其Interval属性为1000,即每隔1000ms=1s触发一次Timer控件的Timer过程,该过程代码如下。

Private Sub Timer1_Timer()

(4).Text = "日期:时间 " & Now

End Sub

在过程中将系统日期Now赋给StatusBar的第4个窗格,即每隔1秒钟刷新一次日期与时间显示内容。

(5)工具栏中添加Edit按钮

在工具栏中添加一个Edit按钮,用于控制RichTextBox控件的编辑状态。当Edit

按钮处于按下状态时,RichTextBox允许编辑,同时状态栏中显示“状态:编辑”,当Edit按钮处于弹出状态时,RichTextBox禁止编辑,同时状态栏中显示“状态:只读”。设置按钮的属性为:关键字为Edit,样式属性为1-tbrCheck,值属性为tbrpressed。

修改Toolbar1_ButtonClick事件过程如下。

Private Sub Toolbar1_ButtonClick(ByVal Button As )

Select Case

Case "Copy"

Call Copy_Click

Case "Cut"

Call Cut_Click

Case "Paste"

Call Paste_Click

Case "Edit"

If = tbrPressed Then '当Edit处理按下状态时,

= False '允许RichTextBox1编辑文本

(2).Text = "状态:编辑" '在状态栏第2个窗口显示状态:编辑

Else

= True '否则,禁止RichTextBox1编辑文本

(2).Text = "状态:只读" '在状态栏第2个窗口显示状态:只读

End If

End Select

End Sub

在上述过程中,当条件“ =tbrPressed”成立时,即工具栏中的“编辑”按钮是处于“按下”状态时,通过给RichTextBox1控件的Locked属性赋False值,使文本编辑器处理编辑状态,同时在状态栏的第2 个窗格中显示“状态:编辑”;否则“编辑”按钮是处于“弹出”状态,通过给RichTextBox1控件的Locked属性赋True值,使文本编辑器处理只读状态,同时在状态栏的第2 个窗格中显示“状态:只读”。

(6)显示当前光标位置(x,y)

可利用RichTextBox控件的鼠标移动事件过程MouseMove中的形参(x,y),即光标的x,y坐标,来显示当前光标的坐标位置。

Private Sub RichTextBox1_MouseMove(Button As Integer, Shift As Integer, x As Single, y

As Single)

(1).Text = "x:" & x & ",y:" & y‘将光标(x,y)赋给状态栏的第1个窗格

End Sub

(7)显示系统时间

在Form_Load事件中添加代码:

(4).Text = "日期:时间 " & Now

s(4).Value = tbrPressed‘使工具栏中编辑按钮处于按下状态、

(8)运行程序

通用对话框与单文档编辑器设计

在Windows程序中常使用对话框来实现人机对话,对话框既可以用来显示信息,又可以用于输入数据。Visaul Basic允许用户使用多种方法创建不同的对话框,可以用MsgBox函数生成消息框,用InputBox函数生成输入框,用CommonDialog控件生成通用对话框。本节主要介绍用CommonDialog控件创建通用对话框方法,以及用CommonDialog控件设计单文档编辑器的方法。

通用对话框概述

1.通用对话框的功能

Visual Basic向用户提供的通用对话框可完成“文件打开”、“文件保存”、“文件打印”、“颜色设置”、“字体设置”、“帮助”6项功能,每项功能均用单独的一个对话框实现。打开文件的对话框如图4.12所示。

图4.12 打开文件对话框

2. 通用对话框的设计方式

在Visual Basic中,通用对话框是用CommonDialog控件设计的。但CommonDialog并不是一个有对话框界面的控件,而是通过控件的6个方法来打开6种通用对话框,实现“文件打开”、“文件保存”、“文件打印”、“颜色设置”、“字体设置”与“帮助”6项功能。下面介绍CommonDialog控件的常用属性与6种打开对话框方法。

CommonDialog控件

1.添加到工具箱

执行菜单命令:工程 | 部件| 使Microsoft CommonDialog Contral 6.0复选框有效。

在工具箱中双击CommonDialog图标可将控件添加到窗体中去。

2.属性

因为CommonDialog控件用于创建“文件打开”、“文件保存”、“文件打印”、“颜色设置”、“字体设置”、“帮助”6种对话框,所以控件的属性可分为文件、颜色与字体三类。

(1)文件类属性

① FileName属性用于设置或返回要“打开”、“保存”、“打印”的文件名。

② Filter属性用于文件过滤器,属性格式为:

描述1| 过滤器1| 描述2 | 过滤器2 …。例如:

所有文件(*.*)|*.*| RTF格式(*.RTF)|*.rtf |文本文件(*.txt)|*.txt

打开文件的文件过滤器效果如图4.12下部的文件类型所示。

图4.12

打开文件对话框

③ FilterIndex属性用于指定默认的文件过滤器。例如:FilterIndex=3;

表示指定默认文件过滤器为*.txt,如图4.12中文件类型框首行:文本文件(*.txt)。

(2)颜色类属性

① Flags属性用于设置颜色对话框中初始颜色,初值为cdlCCRGBInit;

② Color属性用于返回用户在颜色对话框中所选择的颜色。

(3)字体类属性

① Flags属性用于设置初始字体,取值与含义如表4.6所示,常取值为:cdlCFBoth。

表4.6 Flags取值与含义

FontSize属性用于返回字体大小;

FontBold属性用于返回是否选择“粗体”;

FontItalic属性用于返回是否选择“斜体”;

FontUnderline属性用于返回是否选择“下划线”;

FontStrikethru属性用于返回是否选择“删除线”。

3. CommonDialog控件的方法

CommonDialog控件用于打开对话框的6种方法如下。

(1)ShowOpen方法用于显示打开文件对话框,打开指定目录中的文件。

调用该方法的格式为:en

调用打开文件对话框的效果如图4.12所示。

当用户在对话框中选择文件名(如:)后,应使用控件的me属性返回所选文件名,然后再用RichTextBox控件的LoadFile方法打开指定文件。

语法格式为:le me

(2)ShowSave方法用于显示保存文件对话框,将文件保存到指定目录去。

调用该方法的格式为:CommonDialog. ShowSave

调用效果与图4.12类似。

当用户在对话框中选择文件名(如:)后,应使用控件的me属性返回所选文件名,然后再用RichTextBox控件的SaveFile方法保存指定文件。

语法格式为:le me

(3)ShowPrinter方法用于显示打印对话框,打印输出文件。

调用该方法的格式为:CommonDialog. ShowPrinter。

(4)ShowColor方法用于显示字体颜色对话框,用户可设置字体颜色。

用户可用“颜色”对话框在调色板中选择颜色(如图4.13),并用Color属性返回选定的颜色。

图4.13 颜色对话框

调用对话框设置“颜色”的步骤如下:

将通用对话框控件的Flags属性设置为cdlCCRGBInit。

用ShowColor方法显示颜色对话框。

用Color属性返回“颜色”对话框所选颜色。

例如:

= cdlCCRGBInit

lor

or =

(5)ShowFont方法用于打开字体对话框,用户可调用字体对话框选择字体的大小、颜色等。

调用“字体”对话框的步骤如下:

将Flags属性设置为表4.6三种值之一;

用ShowFont方法打开字体对话框;

用字体类属性返回字体的设置信息。

(6)ShowHelp方法用于打开帮助对话框,用户可获得帮助信息。

单文档编辑器设计

【例4.5】设计一个带有下拉式菜单、弹出式菜单、工具栏与状态栏的单文档编辑器,其工作界面如图4.14所示

图4.14单文档编辑器设计示例

设计要求如下:

(1)在例4.4的工程中修改“文件”主菜单项,增加“颜色”、“字体”菜单项。

(2)添加通用对话框控件CommonDialog。

(3)在下拉式菜单的“打开”、“保存”、“打印”、“颜色”与“字体”5个菜单项单击事件中,用CommonDialog的5种方法启动“打开”、“保存”、“打印”、“颜色”与“字体”对话框,完成文件的打开、保存、打印工作,完成RichTexBox控件中被选文本的颜色与字体的设置工作。

(4)在窗体中添加一个新的工具栏,在此工具中添加5个按钮,分别用于文件的打开(Open)、保存(Save)、打印(Print)、颜色(Color)、字体(Font)的操作。

程序设计步骤如下:

(1)新建文件目录

新建文件目录e:vbprogramexemple4_5。

(2)另存工程文件

打开例4.4所建工程ex4_,将工程文件ex4_另存到新建目录中,命名为ex4_ ,将窗体文件Form_另存为Form_。窗体的Name属性改为Form_ex45,Caption属性改为“单文档编辑器设计示例”。

(3)修改“文件”主菜单项

在“文件”主菜单中增加“颜色”、“字体”菜单项。

(4)窗体中添加ToolBar与ImageList控件

在窗体中添加一个ToolBar2控件与一个ImageList2控件,在ImageList2控件中添加5个图像Open、Save、Print、Color、Font。将ToolBar控件通用页中的图像列表属性设置为ImageList2。在ToolBar控件按钮选项卡中添加5个按钮,标题为“打开”、“保存”、“打印”、“颜色”与“字体”,关键字分别为Open、Save、Print、Color、Font;图像索引分别为1、2、3、4、5。

(3)向窗体内添加CommonDialog控件

将CommonDialog 控件添加到工具箱中去。在工具箱中双击CommonDialog控件,则该控件被自动放置到窗体上。

(4)编写打开、保存与打印文件事件过程

①在菜单中单击“打开”菜单项,输入单击打开文件菜单事件过程代码:

Private Sub Open_Click()

Dim strOpen As String '定义字符型变量strOpen,用于存放文件名

With CommonDialog1

.Filter = "所有文件(*.*)|*.*|RTF格式(*.rtf)|*.rtf|文本文件(*.txt)|*.txt" '设置文件过滤

.FilterIndex = 3 '设置默认的过滤文件为 *.txt

.ShowOpen '调用打开文件对话框,选择要打开的文件

strOpen = .FileName '将指定文件名赋给变量strOpen

le strOpen '用 LoadFile 方法打开strOpen中的文件

(3) = "文件名:" & strOpen '在状态栏中显示文件名及文件标题

End With

End Sub

②在菜单中单击“保存”菜单项,输入单击保存文件菜单事件过程代码:

Private Sub Save_Click()

With CommonDialog1

.ShowSave '调用保存文件对话框,选择要保存的文件

le .FileName '用SaveFile 方法保存.FileName中的文件

End With

End Sub

③在菜单中单击“打印”菜单项,输入单击打印文件菜单事件过程代码:

Private Sub Print_Click()

inter

End Sub

(4)编写设置颜色与字体事件过程

先在图4.1中的下拉式菜单的“工具栏”菜单项中添加“颜色”与“字体”两个二级子菜单项。然后编写设置颜色与字体事件过程。

①在菜单中单击“颜色”菜单项,输入单击设置颜色菜单事件过程代码:

Private Sub Color_Click()

With CommonDialog1

.Flags = cdlCCRGBInit

.ShowColor '调用颜色对话框(即调色板)

or = .Color '将用户选择颜色赋给编辑器

End With

End Sub

②在菜单中单击“字体”菜单项,输入单击设置字体菜单事件过程代码:

Private Sub Font_Click()

With CommonDialog1

.Flags = cdlCFBoth Or cdlCFEffects

.ShowFont'调用设置字符对话框

tName = .FontName '将用户选择字体赋给编辑器

tSize = .FontSize '将用户选择字形赋给编辑器

d = .FontBold '将用户选择粗体赋给编辑器

lic = .FontItalic '将用户选择斜体赋给编辑器

erline = .FontUnderline '将下划线赋给编辑器

ikeThru = .FontStrikethru '将用户选择删除线赋给编辑器

or = .Color '将用户选择颜色赋给编辑器

End With

End Sub

(5)双击工具栏ToolBar2,输入单击按钮事件过程代码如下。

Private Sub Toolbar2_ButtonClick(ByVal Button As )

Select Case

Case "Open"

Call Open_Click

Case "Save"

Call Save_Click

Case "Print"

Call Print_Click

Case "Color"

Call Color_Click

Case "Font"

Call Font_Click

End Select

End Sub

(6)保存文件,运行程序后的窗体界面如图4.14所示。

MDI多窗体程序设计

用户界面主要有两种:单文档界面(SDI)和多文档界面(MDI)。SDI界面的一个示例就是记事本应用程序(NotePad)。在NotePad中,只能打开一个文档,想要打开另一个文档时,必须先关上已打开的文档。然而有些则像Miscrosoft Excel和Microsoft Word那样的应用程序,它允许同时处理多个文档,且每一个文档都显示在自己的窗口中,这类用户界面称为多文档用户界面,即MDI。

MDI多窗体程序由MDI主窗体与MDI子窗体组成。通常在主窗体内设计下拉式菜单或工具栏,执行菜单项命令或者工具栏中按钮命令时调用子窗体程序,被打开的子窗体界面将被限制在主窗体的用户工作区内。下面依次介绍创建MDI主窗体与子窗体的方法,及在主窗体内调用子窗体程序的方法。

一、创建MDI主窗体

1、创建MDI主窗体

(1)执行菜单命令:工程 | 添加MDI窗体,出现“添加MDI窗体”对话框。

(2)选择“新建”或使用“现存”窗体,单击“打开”按钮后出现MDI主窗体界面。

2、将MDI主窗体设为工程的启动窗体

(1)执行菜单命令:工程 | 工程属性,出现工程属性对话框。

(2)在对话框的通用选项卡中单击启动对象下拉按钮,选择MDI窗体名,则MDI窗体成为启动窗口。

注意:一个应用程序只能有一个MDI窗体,如果工程已经有了一个MDI窗体,则该工程菜单上的添加MDI窗体命令就不可使用。

二、建立MDI子窗体

1、创建MDI子窗体的方法

(1)工程中创建一个新的普通窗体;

(2)将MDIChild属性设为True。

2、MDI窗体运行时的特性

(1)所有子窗体都显示在MDI窗体的工作空间内。

(2)当最小化一个子窗体时,它的图标将显示在MDI窗体上而不是任务栏中。

(3)当最大化一个子窗体时,它的标题会与MDI窗体的标题组合在一起并显示于MDI标题栏上。

(4)通过设定AutoShowChildren属性,子窗体可以在窗体加载时自动显示或自动隐藏。

(5)活动子窗体的菜单(若有)将显示在MDI窗体的菜单栏中,而不是显示在子窗体中。

三、MDI窗口菜单设计

所谓“窗口”菜单是指专门用于显示已打开子窗体的标题名称,并能对已打开子窗体进行“层叠”、“平铺”、“垂直”与“排列图标”等项操作的菜单项。

1、创建“窗口”菜单项

当某个菜单项的“显示窗口列表”复选框有效时(即 WindowsList=True),所有已打开子窗体的标题名称将出现在该菜单项的下方。

2、“窗口”一级子菜单项的设计

在菜单编辑器中,给MDI“窗口”菜单添加“层叠”、“平铺”、“垂直”与“排列”四个一级子菜单项。然后使用MDI窗体的Arrange方法实现“层叠”、“平铺”、“垂直”与“排列”的功能。

Arrange方法的语法:<窗体名>.Arrange( 实参 )

其中实参的取值与对应的排列方式见表4.7。

表4.7 Arrange方法的实参取值与对应排列方式

例如:在MDI窗体(MDIForm_xsda)中实现子窗体层叠的Arrange方法调用格式为:

MDIForm_e(0) 或 MDIForm_e(vbCascade)。

综合应用(学生档案管理系统设计)

本节以学生档案管理系统设计为例,说明菜单、工具栏、状态栏、对话框的综合应用。学生档案管理系统由1个MDI主窗体与6个MDI子窗体组成,MDI主窗体由下拉式菜单、工具栏、状态栏组成,用户单击菜单项命令能调用相应的子窗体程序,且已打开的子窗体标题能在“启动窗口”主菜单项中列出,如图4.15所示。

1、学生档案管理系统MDI主窗体与子窗体设计

【例4.6】建立MDI多文档“学生档案管理系统”主窗体以及校历子窗体、学生档案录入子窗体、学生档案查询子窗体、学生档案统计子窗体、学生档案打印子窗体和系统维护子窗体。程序设计步骤如下。

(1)新建学生档案管理系统文件夹:e:vbxsdagl。

(2)新建工程,将工程文件保存到e:vbxsdagl,文件名为。

(3)创建MDI窗体,执行菜单命令:工程 | 添加MDI窗体。

(4)设置MDI主窗体的属性

Name:MDIForm_XSDA

Caption:学生档案管理系统

WindowsState:2-Maximized

(5)将主菜单窗体MDIForm_作为启动主窗体执行菜单命令:工程 | 工程属性 | 通用 | 启动对象 | 选择MDIForm_。

图4.15 学生档案管理主菜单设计界面

(6)将Form1窗体从工程中删除

在工程资源管理器中用鼠标右击Form1窗体,在弹出式菜单中执行移除Form1窗体的命令。即可将Form1窗体从工程中移除。

注意:也可在上述弹出式菜单中,选择添加命令,将移除的窗体重新添加到工程中来。

(7)创建6个MDI子窗体

①创建6子窗体

执行菜单命令:工程 | 添加窗体 | 新建 | 窗体 | 打开,共建6个窗体。

②设置窗体属性

按表4.8 的要求设置6个MDI子窗体的属性。

表4.8设置窗体属性

(8)保存MDI窗体文件

2、学生档案管理系统MDI主菜单设计

【例4.7】建立“学生档案管理”窗体的下拉式菜单,其内容如表4.9所示。

可以参照例4.1的步骤建立下拉式菜单,设计步骤如下:

(1)打开上例工程,选择MDIForm_XSDA。

(2)使用菜单编辑器建立菜单项

建立校历主菜单。标题栏中输入“校历”,名称栏中输入“M1”,按“下一个按钮”产生新的菜单项;标题栏中输入“校历管理”,名称栏中输入“M11”,按“→键”使“校历管理”成为下一级菜单,按“下一个按钮”产生新的菜单项;按此方法建立每一个菜单项。单击“确定”按钮退出菜单编辑器。

菜单项名字命名规则是:主菜单从M1~M7,一级子菜单(含分隔条)是按二维数组M(8,7)的元素Mij方式命名的。从“校历管理”子菜单项M11到“排列”子菜单项M74。

表4.9 “学生档案管理”窗体的主菜单

(3)建立菜单项事件过程

①在窗体设计器中,选择并单击“退出”菜单,进入代码编辑器,输入如下代码:

Private Sub M12_Click()

End

End Sub

②编写调用校历管理子窗体的事件过程

Private Sub M11_Click()

Form_

End Sub

其它5个子窗体的调用事件过程与此类似,由读者自己编写。

③编写“层叠”子菜单事件处理过程。

Private Sub M71_Click()

MDIForm_e (0)

End Sub

“平铺”、“垂直”与“排列图标”菜单项的事件过程由读者自已编写。

3、学生档案管理系统主窗体中工具栏设计

【例4.8】在例4.7中增加工具栏,放置八个按钮,分别用于校历、录入、查询、统计、打印、维护、文本编辑和音乐子窗体的快速调用。

(1)打开例4.7所建工程。

(2)在窗体设计中放置一个ToolBar控件与一个ImageList控件。

(3)在ImageList控件中添加8个图像、、、、、、、(图像文件位于光盘的vbimage目录中);关键字为Date、Write、Find、Stat、Print、Repair、Edit、Music。

(4)将ToolBar控件通用选项卡中的图像列表属性设置为ImageList1。在ToolBar控件按钮页中添加8个按钮,其标题为校历、录入、查询、统计、打印、维护、文本编辑和音乐,关键字分别为Date、Write、Find、Stat、Print、Repair、Edit、Music;图像索引号分别为1~8;提示为日历管理、学生档案录入、学生档案查询、学生档案统计、学生档案打印、系统维护、文本编辑器和多媒体播放器。

(5)编写单击工具栏按钮的事件过程

要求单击前6个按钮后能调用对应子窗体,并在状态栏第1个窗格上显示激活子窗体的标题名称,如单击校历管理按钮则状态栏显示“激活窗体:校历管理”。事件过程的部分程序代码如下。

rivate Sub Toolbar1_ButtonClick(ByVal Button As )

Select Case

Case "Date"

Form_

(1).text = "激活窗体:校历管理"

„„„

End Select

End Sub

事件过程的完整代码程序留作实验由读者自己完成。

4、学生档案管理系统主窗体中状态栏设计

【例4.9】在例4.8的基础上添加状态栏,用于显示当前打开的子窗体及当前日期。

程序设计步骤如下。

(1)打开例4.8所建工程。

(2)在窗体上放置状态栏,双击工具箱中的StatusBar控件,可将状态栏放置在窗体下方。

(3)窗体上放置时间控件Timer。在工具箱中双击Timer则可将Timer控件放置在窗体上。设置其Interval属性为1000。

(4)设置状态栏属性

右击状态栏打开状态栏的属性页。在“窗格”选项卡中添加两个窗格,其“文本”属性分别为:激活窗体、日期:时间。

(5)编写事件过程代码显示当前时间

Private Sub Timer1_Timer()

(2).Text = "日期:时间 " & Now

End Sub

在Form_Load事件中添加代码:

(2).Text = "日期:时间 " & Now

程序运行后的界面如图4.15所示。

真诚为大家奉献、由于工作需要尽管PC机的程序编写不是我们的主要工作作为一个嵌入式软工用VB、VC/C++编写一些测试小工具是很有必要的。希望与大家交流由于时间与精力的关系我目前只学习我需要的那部分内容。

/sudshine/home


本文标签: 按钮 菜单 窗体 控件