版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章应用程序界面设计
8.1菜单8.2工具栏8.3状态栏8.4多重窗体和多文档界面习题8.1菜单前面所讲的众多应用程序都是由一个窗体和几个控件组成的,属于简单的应用程序,此处我们将通过增加菜单来增强VB应用程序的功能。现代应用软件既要具备先进合理的内核,也要具备良好的用户界面,因此,屏幕菜单技术在各类应用软件的编程中得到了广泛使用。菜单的基本作用有两个:一是将应用程序的所有功能分类显示于菜单的选项中,以便用户选择;二是管理应用系统,控制各种功能模块的运行。一个高质量的菜单程序,应该使用户界面美观、操作方便。在实际应用中,菜单分为下拉式和弹出式两种。案例1带下拉式菜单的文本编辑器
1.学习目标设计一个带有下拉式菜单系统的简易文本编辑器,布局如图8.1所示。窗体中包含一个文本框。窗体的菜单系统包括“文件(F)”、“编辑(E)”及“格式(O)”三个主菜单。其中,“文件(F)”包括“打开”、“保存”及“关闭”三个菜单项;“编辑(E)”包括“剪切”、“复制”、“粘贴”及“全选”四个菜单项;“格式(O)”包括一个“字体”菜单项和一个“颜色”的级联菜单项。按Alt+F键可下拉出“文件”主菜单下的子菜单,按Alt+E键可下拉出“编辑”主菜单下的子菜单,按Alt+O键可下拉出“格式”主菜单下的子菜单。单击“文件”下的“关闭”菜单项或按Ctrl+Q键可退出程序的运行;单击“格式”下的“字体”菜单项,文本框中的字体变成隶书;单击“格式”下的“颜色”菜单项的级联菜单项“红色”,文本框中的字变成红色;单击“格式”下的“颜色”菜单项的级联菜单项“蓝色”,文本框中的字变成蓝色。图8.1简易编辑器的窗体布局
2.相关知识
1)菜单的结构下拉式菜单系统的结构如图8.2所示。在下拉式菜单中,一般有一个菜单栏,它是所有主菜单的集合。当用户选择了相应的主菜单后,就会下拉出一个子菜单。子菜单由许多菜单项构成,如果某个选项后带有“…”,则表示选中它将会启动一个对话框;如果选项后带有一个三角符号,则表示它是一个“级联菜单”,即它下面还有一级下拉菜单。如果把菜单栏也算为一层,则级联菜单最多可达6层。在一般应用上很少有人这样设计,因为6层对用户而言显得太复杂了。图8.2下拉式菜单系统的基本结构
2)菜单编辑器
VB提供了设计菜单的工具——菜单编辑器。使用菜单编辑器,可以轻松、快速地创建、编辑、修改主菜单、子菜单和菜单项,并且可以设定菜单是否包括快捷键、快速键和复选框,从而建立一个应用程序的菜单系统。在设计菜单时,打开“菜单编辑器”的方法有两种:一种是选择“工具”→“菜单编辑器”项,就会在屏幕上弹出一个“菜单编辑器”窗口,如图8.3所示;另一种是在窗体上点击右键,在弹出的菜单中选“菜单编辑器”项。图8.3菜单编辑器需要说明的是,虽然菜单系统是一个整体,但实际上每一个菜单选项就是一个控件。也就是说,设计菜单同以往设计控件类似,使用菜单编辑器就是在设计阶段对菜单的属性进行设置。除此之外,在程序运行时,也可以通过代码改变属性值。VisualBasic6.0的菜单只有一个单击事件——Click。菜单编辑器上部各项是用来对菜单项进行属性设置的,其含义如下:①“标题(P)”(Caption):设置菜单栏、菜单项或子菜单项的文字内容。运行程序后,该项可通过设置Caption属性值加以改变。如果想要设定快速键,可利用连字符(&)来设置,即在设置菜单栏、菜单项或子菜单项的文字内容后加上连字符(&)及一个英文字母。运行后就可以利用Alt键和该英文字母快速地选中此菜单项。如在标题栏仅输入破折号“-”,则可以新增分隔线,将菜单项加以分类。②“名称(M)”(Name):菜单控件的名称,这个名字将在设计程序时使用,是提供给计算机识别菜单控件用的,此项必须设置。③“索引(X)”:当多个菜单项或子菜单项设定为同一名称时,可以用索引值(0,1,2…)来区别每一个项目。需要注意的是,索引值一定要递增排序,即依照所完成的菜单项由左至右,从上到下以递增的方式来设定索引值。④“快捷键(S)”:为菜单项设置快捷键,可从“快捷键(S)”的下拉列表框中选择系统提供的、可用的快捷键组合。⑤“复选(C)”、“有效(E)”和“可见(V)”:这些选项控制菜单项的状态。“复选”用以控制菜单项是否有选中标志;“有效”表示是否让使用者选择该项;“可见”则设置是否显示该菜单项。菜单编辑器中部有7个按钮,用来对输入的菜单项进行简单的编辑。这7个按钮的功能如下:①“←”和“→”:每单击一次向右箭头“→”就在选定的菜单项前添加4个点,表示该菜单项为前一菜单项的子菜单,即将此项的等级下降一级。如图8.4所示,“颜色”前有4个点,表示它为“编辑”主菜单的子菜单,而“红色”、“蓝色”前有8个点,表示它们是“颜色”的子菜单,即级联菜单。单击向左箭头“←”则为相反操作,即将此项的等级提升一级。图8.4菜单编辑器设置示例②“↑”和“↓”:单击“↑”按钮将所选取的菜单项上移,单击“↓”按钮将所选取的菜单项下移。③“下一个”:在所选取的菜单项下方新增空白项或选取菜单项。④“插入”:在光标所在位置的上方插入一个新的菜单项。⑤“删除”:删除光标所在处的菜单项。菜单编辑器下部是菜单项的显示区,输入的菜单项将在此处显示出来。
3.程序实现设计菜单系统应首先通过菜单编辑器设置各菜单项,然后为菜单项添加相应的事件过程。其具体步骤如下。
1)界面设计与属性设置
(1)新建窗体,将其Caption属性设置为“简易编辑器”。
(2)打开“菜单编辑器”,建立“文件(F)”主菜单:在“标题(P)”项键入“文件(&F)”(“&”符号表示对“文件”主菜单设置了一个快速访问键,用户同时按下Alt键和F字母键,就能打开文件的“文件”主菜单),在“名称(M)”项键入“mnuFile”。
(3)建立“打开”菜单项:单击“下一个”及“→”按钮,在“标题(P)”项键入“打开”,在“名称(M)”项键入“mnuFileOpen”,在“快捷键(S)”项中选择“Ctrl+O”,如图8.5所示。图8.5建立“打开”菜单项
(4)建立“保存”、“关闭”菜单项的方法同(3)。
(5)建立分隔线:将光标移到“关闭”菜单项,单击“插入”按钮,可以看到在“关闭”命令上添加了一行,并自动加入了一个内缩符号。在“标题(P)”项中输入一个减号“-”,在“名称(M)”项键入“sep2”,如图8.6所示。图8.6建立分隔线注意:分隔线本身不是菜单项,它仅仅起分隔菜单项的作用,因此不能带子菜单,不能设置“复选”等属性,也不能设置快捷键。但必须设置“名称(M)”属性,否则在运行时会出错。到目前为止,第一个“文件”主菜单和它的第一级子菜单已经全部建立,按照同样的方法可以建立“编辑”主菜单及其“剪切”、“复制”、“粘贴”和“全选”子菜单,“格式”主菜单及其“字体”和“颜色”子菜单,以及“颜色”的子菜单项“红色”和“蓝色”。具体菜单项属性设置如表8.1所示。设置完成后的菜单编辑器如图8.6所示。
(6)设计完菜单后,单击“确定”按钮,将菜单编辑器关闭。如果用户要修改一个已构造好的菜单,可再次进入菜单编辑器窗口进行修改。表8.1菜单项属性设置
2)编写代码构造好菜单后,还要为各个菜单项编写代码,才能实现通过选择菜单项来完成某项操作的功能。“文件”主菜单中的“打开”、“保存”菜单项,“编辑”主菜单中的“剪切”、“复制”、“粘贴”和“全选”等菜单项的事件过程将在后面的章节分别给出,这里我们仅对其余菜单项的事件过程进行编写。在“代码”窗口中输入如下代码:①编写“文件”主菜单中的“关闭”菜单项的事件过程。
PrivateSubmnuFileClose_Click()
End
EndSub②编写“格式”主菜单中“字体”菜单项的事件过程。
PrivateSubmnuFormatFont_Click()
Text1.FontName="隶书"
EndSub③编写“颜色”子菜单“红色”、“蓝色”级联菜单项的事件过程。
PrivateSubmnuFormatColorRed_Click()'红色
Text1.ForeColor=vbRed
EndSub
PrivateSubmnuFormatColorBlue_Click()'蓝色
Text1.ForeColor=vbBlue
EndSub
3)运行程序运行程序,结果如图8.1所示。案例2菜单项的控制
1.学习目标在案例1中设计的简易编辑器的基础上,实现“编辑”主菜单中“剪切”、“复制”、“粘贴”及“全选”菜单项的功能。按Alt+E键可下拉出“编辑”主菜单下的子菜单,按Ctrl+X键可执行“剪切”操作,按Ctrl+C键可执行“复制”操作。“剪切”、“复制”、“粘贴”菜单项的初始状态均为无效状态,当在文本框中选中某段文本时,“剪切”、“复制”菜单项状态变为有效状态;剪贴板中有数据后,“粘贴”菜单项变成有效状态,如图8.7所示。图8.7简易编辑器的外观
2.相关知识
1)剪贴板的应用在文本编辑器中常用到“剪切”或“复制”操作,“剪切”或“复制”是将所选文本存到剪贴板上,便于以后用“粘贴”操作将剪贴板上的内容“贴”到光标的指定位置,这几项操作都是借助剪贴板完成的。剪贴板(Clipboard)是用来暂时保存文本和图形的一种特殊的控件,它是VisualBasic中预先定义好了的控件组,剪贴板对象不具备任何属性及事件,但有一些方法可以用来发送与接收数据。其中最有用的两种方法是SetText和GetText。SetText方法是将选中的文本数据复制到剪贴板上,而GetText方法则是将剪贴板上的文本数据发送到光标所在的位置。
(1)在文本编辑器中进行“剪切”操作时,首先判断Text1是否有文本被选中,只有选中了文本才能进行剪切操作。判断是否有文本被选中时使用了文本框的SelLength属性,该属性返回被选中的文本的字符数量,它大于零则表示有文本被选中。代码如下:
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
Text1.SelText=""
mnuEditPaste.Enabled=True
EndIf在第二行代码中利用了文本框的SelText属性,该属性表示返回被选中的文本。将Text1中的反白的文本用Clipboard.SetText方法复制到剪贴板上,并利用Text1.SelText=""将Text1.SelText(反白区)中的文本设为空白。剪贴板中有数据后,“粘贴”菜单项变成有效状态。
(2)在文本编辑器中进行“复制”操作与“剪切”相似,只不过被选中的文本复制到剪贴板上后不被删除。其代码如下:
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
mnuEditPaste.Enabled=True
EndIf
(3)在文本编辑器中进行“粘贴”操作是把剪贴板上的数据传送到光标所在处,故在进行“粘贴”之前,首先应该确认剪贴板上是否有数据。通常用Len(Clipboard.GetText)来测试剪贴板上字符的长度,如果长度值大于零则表示剪贴板上有字符。只有剪贴板上有字符才能将剪贴板上的数据发送给Text1的SelText属性(注意:不是发送给Text属性,若将数据赋值给Text属性,则文本框中原来所有的文本将被剪贴板中的数据替代,这与要求不一致)。其代码如下:
IfLen(Clipboard.GetText)>0Then
Text1.SelText=Clipboard.GetText
EndIf此外,在使用剪贴板之前最好用Clear方法将剪贴板清空,因为剪贴板是Windows的系统资源,它可能已存放其他程序复制的信息,所以在使用之前应先清空剪贴板中的内容。
2)动态改变菜单项的状态设计良好的菜单栏可以更精确地引导用户操作,因此设计者需掌握如何通过设置选项的状态来控制菜单。例如,在简易编辑器中,若未选中某文本,则“剪切”、“复制”、“粘贴”菜单项的状态应该为无效状态,而当选中某段文本时,“剪切”、“复制”菜单项状态则变为有效状态。这些选项的初始状态可在“菜单编辑器”中设置,运行时状态的改变可以由程序动态控制。菜单项的“是否有效”可以通过该选项的Enabled属性来设置。例如,设置“剪切”、“复制”、“粘贴”菜单项的初始状态为“无效”,可用“菜单编辑器”完成设置,也可在装载窗体时执行代码,其代码如下:
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
mnuEditPaste.Enabled=False当在文本框中选中某文本即Text1.SelLength>0时,“剪切”、“复制”命令状态应变为有效状态;未选中时,菜单项则为无效的灰色。其状态的动态改变可以由以下代码完成:
IfText1.SelLength>0Then
mnuEditCut.Enabled=True
mnuEditCopy.Enabled=True
Else
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
EndIf有些菜单项状态类似一种开关状态,可在“选中”和“未选中”之间切换。菜单项的“是否选中”可通过Checked属性来设置。Checked属性为True,表示“选中”,菜单项前有“√”符号;为False,表示“未选中”,菜单项前无“√”符号。例如,点击“全选”菜单项后,菜单项前出现“√”符号,所有文本为全部选中的反白状态,再次点击后,取消以上现象。相应的代码如下:
IfmnuEditSel.Checked=FalseThen
mnuEditSel.Checked=True
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
Else
mnuEditSel.Checked=False
Text1.SelLength=0
EndIf由于mnuEditSel.Checked是开关变量,只有两种状态,因此在程序中应首先判断mnuEditSel.Checked的值。当它为False时,应设为True,为“√”状态,同时选中所有文本;当mnuEditSel.Checked的值为True时,则设为False。
3.程序实现
1)界面设计与属性设置界面设计与属性设置见案例8.1。
2)编写代码在“代码”窗口中输入如下代码:
PrivateSubForm_Load()
Clipboard.Clear
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
mnuEditPaste.Enabled=False
EndSub
PrivateSubmnuEdit_Click() '编辑
IfText1.SelLength>0Then
mnuEditCut.Enabled=True
mnuEditCopy.Enabled=True
Else
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
EndIf
EndSub
PrivateSubmnuEditCut_Click() '剪切
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
Text1.SelText=""
mnuEditPaste.Enabled=True
EndIf
EndSub
PrivateSubmnuEditCopy_Click() '复制
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
mnuEditPaste.Enabled=True
EndIf
EndSub
PrivateSubmnuEditPaste_Click() '粘贴
IfLen(Clipboard.GetText)>0Then
Text1.SelText=Clipboard.GetText
EndIf
EndSub
PrivateSubmnuEditSel_Click() '全选
IfmnuEditSel.Checked=FalseThen
mnuEditSel.Checked=True
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
Else
mnuEditSel.Checked=False
Text1.SelLength=0
EndIf
EndSub
3)运行程序运行程序,结果如图8.7所示。案例3弹出式菜单的设计
1.学习目标设计一个带有弹出式菜单的简易编辑器,布局如图8.8所示。窗体中包含一个文本框,窗体的菜单系统包括含“文件(F)”及“格式(O)”2个主菜单的下拉式菜单和一个含编辑功能的弹出式菜单。其中弹出式菜单包括“剪切”、“复制”、“粘贴”及“全选”4项。通过本案例的学习,掌握用菜单编辑器设计弹出式菜单的基本方法。图8.8简易编辑器的弹出式菜单
2.相关知识弹出式菜单(PopupMenu)是独立于菜单栏而显示在窗体上的浮动菜单,当单击鼠标右键时可以将它调出来,常被用来快速地在屏幕上显示若干菜单命令,这些命令一般是当前鼠标所指向的对象的快捷操作命令。它也是通过“菜单编辑器”来设计的。由于用户看不见这个菜单,因此必须用PopupMenu方法才能将它显示出来,并指明此菜单的位置与特点,其语法格式为:
[对象.]PopupMenu<主菜单>[,Flags[,X[,Y]]]其中,“主菜单”是指主菜单的名字(Name);“X”、“Y”用来指定显示的位置,如果省略不用,则直接沿用当时的鼠标坐标;“Flags”用来指明菜单的状态,共有四种设置值,如表8.2所示。表8.2Flags的值及其含义
3.程序实现
1)界面设计与属性设置设计步骤如下:
(1)在“菜单编辑器”中建立一个主菜单,名称可以任意设定(如“编辑”),因为主菜单的名称在菜单弹出的时候不显示。
(2)将“编辑”主菜单的“可见”(Visible)属性设为False。运行程序时,不再显示这一项,如图8.9所示。单击“下一个”命令按钮,再单击“→”按钮,依次输入弹出式菜单中的各菜单项,设置方法同下拉式菜单。
图8.9弹出式菜单的属性设置
2)编写代码打开“代码”窗口,在窗体的MouseDown事件过程中编写如下程序:
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2ThenPopupMenumnuEdit
EndSub其中,MouseDown事件表示当在窗体上按下鼠标时,执行程序;Button参数用来返回用户按下鼠标的哪一个键(1表示左键,2表示右键,3表示中键);If语句判断按下的是否为右键,若是右键,则调出弹出式菜单。
3)运行程序运行程序,结果如图8.8所示。8.2工具栏在Windows的各种应用程序中,除菜单命令外,还可以通过工具栏上的按钮发出操作命令。工具栏一般放置在菜单栏的下面,它包含了一组按钮,按钮上既能够显示文字,也能够显示图像,或者同时显示文字和图像。这些按钮与应用程序的某些菜单项相对应,为用户访问应用程序的最常用功能和命令提供了图形接口和快速访问途径。案例4工具栏的设计
1.学习目标设计一个包含“打开”、“粘贴”、“颜色”图形按钮的工具栏,其中“颜色”按钮带下拉式选项“红色”和“蓝色”。单击“打开”和“粘贴”按钮分别弹出一个对话框,单击“颜色”按钮的下拉式选项“红色”或“蓝色”,文本框中的文本变成相应的颜色,如图8.10所示。图8.10工具栏设计效果
2.相关知识
VB提供了Toolbar(工具栏)控件,可以快速地设计工具栏。当需要在工具栏按钮上显示图像时,还要使用ImageList(图像列表)控件中已经加载的图像。
Toolbar控件和ImageList控件都是VisualBasic6.0的外部控件(ActiveX控件)。ActiveX控件是VB工具箱的扩充,这些控件能被添加到工具箱中,也能从工具箱中删除,ActiveX控件可以由系统提供,也可以由第三方厂商提供,还可以由用户自己开发。在应用程序使用它们之前必须首先将其加载到工程中。加载方法是:单击“工程”→“部件”→“控件”,再选中“MicrosoftWindowsCommonControl6.0”选项,单击“确定”按钮关闭“部件”对话框,包括Toolbar(工具栏)、ImageList(图像列表)、StatuBar(状态栏)、ProgressBar(进度条)、TreeView(树状视图)、ListView(列表视图)和Slider(滑块)等常用的MicrosoftWindows控件被添加到工具箱中,如图8.11所示。图8.11加载控件
1) Toolbar控件
Toolbar控件中的每个按钮都可以显示自己的图形并设置标题,可以设置当鼠标指针移到按钮上时显示提示字符,还可以在程序运行时动态增加、删除按钮。Toolbar控件中的按钮可以按功能分组或加入分隔符。此外,Toolbar还是一个控件容器。
(1) Toolbar控件的属性。在设计时,通过设置Toolbar控件的一系列属性,可以定义工具栏中显示的按钮、按钮上显示的文字、图像、按钮提示等,其属性窗口如图8.12所示。图8.12Toolbar控件的“属性页”下面介绍几个主要属性。①“通用”选项卡。●鼠标指针:指定当鼠标指针移动到工具栏上后的形状。读者既可以选择该属性对话框中提供的预选鼠标指针,也可以定义自己的鼠标指针。●图像列表:指定工具栏按钮要显示的图像在哪个ImageList控件中保存着。要在这个下拉列表框中指定ImageList控件,必须在设置该属性之前,先把ImageList控件放置到窗体上。●外观:指定工具栏的外观。0—平面工具栏;1—三维工具栏。●样式:指定按钮的外观。0—平面按钮;1—三维按钮。●显示提示:指定当鼠标指针移动到工具栏按钮上时是否显示该按钮的提示。选中该复选框时,显示提示;否则不显示提示。●有效:指定工具栏是否能够使用,选中时,工具栏有效;否则无效。②“按钮”选项卡。●索引:指定按钮的引用编号,从1开始计数。●标题:指定显示在按钮上的标题。●关键字(Key):指定引用按钮的字符串。●样式:指定按钮的外观和状态。该栏所提供的按钮样式共有6种,如表8.3所示。●工具提示文本:指定当鼠标指针移动到按钮上并稍微停留后,显示在鼠标指针附近的提示信息。●可见:选中该复选框时,显示当前按钮;否则不显示。●有效:选中该复选框时,当前按钮有效,即用户能够操作当前按钮;否则无效。●按钮菜单:该组合框中的选项用于定义按钮的下拉菜单。表8.3按钮样式的值及其功能
(2) Toolbar控件的事件。一般编写工具按钮的事件过程是在Toolbar控件的ButtonClick事件中,当用户单击Toolbar控件内的Button对象时发生该事件。代码通常利用Case语句及Button.Key来判定用户按下了哪一个按钮,以便能执行相应的程序代码。
ButtonClick事件过程的语法为:
PrivateSubobject_ButtonClick(ByValbuttonAsButton)其中,object为Toolbar控件的名称,button参数为用户所单击的按钮,Button对象有个名称为Key的属性(对应于“属性页”对话框中的“关键字”文本框),应用程序通过Key属性能够知道用户单击了工具栏中的哪一个按钮。若该工具按钮为带下拉式菜单的按钮,则在ButtonMenuClick事件中编写代码,利用ButtonMenu.Key来判定用户使用的是哪一个菜单项,其判断值为Key栏的设置值。
2) ImageList控件
ImageList控件能够包含一组图像,这些图像可以被其他Windows公共控件使用,例如,在Toolbar控件的按钮上显示的所有图像都可以用ImageList控件来存储。将ImageList控件作为一个单一的图像存储库能够加快应用程序的开发速度。其他控件可以使用ImageList对象中的位图(.bmp)、光标(.cur)、图标(.ico)、JPEG( .jpg)或GIF(.gif)文件。其属性窗口如图8.13所示。图8.13ImageList控件的“属性页”开发人员可以在设计应用程序或运行应用程序时向ImageList控件中添加或删除图像。ImageList对象具有通用的集合对象属性Key和Index,还具有通用的集合方法Add、Remove和Clear。
3.程序实现
1)界面设计与属性设置工具栏的设计步骤如下:
(1)将Toolbar控件调入工具箱中。在窗体Form1中,增加一个文本框Text1作为文本输入区。
(2)将工具箱中的Toolbar控件调入窗体,该控件会自动出现在窗体的上方,若窗体上已有菜单栏,则会固定在其下方。然后,可以利用Toolbar控件添加两种不同类型的按钮,即文字按钮和图形按钮。
(3)设计文字按钮。①用鼠标右键单击窗体上的Toolbar1控件,在弹出的快捷菜单中选择“属性”。在“属性页”中选择“按钮”标签,然后选择“插入按钮”,如图8.14所示。图8.14“插入按钮”设置②在“标题”栏输入想要显示的文字标题,在“关键字”栏输入关键字,在“工具提示文本”栏输入提示文字,最后在“样式”栏选择合适的按钮样式(见图8.14),建立“打开”Default样式的工具按钮。③重复步骤②,建立“粘贴”Check样式的工具按钮,如图8.15所示。图8.15“粘贴”按钮设置④重复步骤②,建立“颜色”Dropdown样式的工具按钮。然后在“按钮菜单”区选择“插入按钮菜单”按钮,建立“颜色”按钮的下拉式选项,如图8.16所示。图8.16“颜色”按钮设置⑤运行程序,在窗体上可见已建好的工具栏界面,如图8.17所示。
(4)设计图形按钮。制作图形按钮前须先准备好图片,然后利用ImageList控件将按钮图片加入,再将Toolbar控件的“ImageList”项指定为ImageList控件,这样就可以为每一个按钮设置一个图片了。图8.17设计好文字按钮的工具栏界面给图8.17中的“打开”、“粘贴”和“颜色”按钮加上图片的具体步骤如下:①从工具箱中将ImageList控件调入窗体,如图8.18所示。图8.18调入ImageList控件②在ImageList1控件上单击鼠标右键,调出快捷菜单,选择“属性”,然后选择“属性页”的“图像”标签,再选择“插入图片”按钮。调出“选择图片”对话框,从中将所有合适的图片文件选中,再选择“打开”,就可以将图片调入ImageList1控件的图像栏中,如图8.19所示。图8.19调入图片③在已做好的Toolbar控件上单击鼠标右键,调出快捷菜单,选择“属性”,然后选择“属性页”的“通用”选项卡,在“图像列表”栏选中ImageList1控件,如图8.20所示。图8.20选择ImageList1控件④选择Toolbar控件“属性页”上的“按钮”选项卡,在“图像”栏选择ImageList1控件上的图片作为按钮上的图片,如图8.21所示。⑤单击“确定”按钮,完成设置。图8.21选择图片
2)编写代码上面的步骤只能完成工具栏外观的设计,如要点击工具按钮时执行一定的功能,则必须为工具按钮编写相应的事件过程。打开“代码”窗口,在Toolbar1_ButtonClick事件过程中输入以下代码:
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"open"
MsgBox"选择“打开”按钮!"
Case"paste"
MsgBox"选择“粘贴”按钮!"
EndSelect
EndSub因为“颜色”按钮为下拉式工具按钮,其选项的代码需由ButtonMenuClick事件激活,故在ButtonMenuClick事件过程中,对“颜色”工具按钮编写如下代码:
PrivateSubToolbar1_ButtonMenuClick(ByValButtonMenuAsMSComctlLib.ButtonMenu)
SelectCaseButtonMenu.Key
Case"red"
Text1.ForeColor=vbRed
Case"blue"
Text1.ForeColor=vbBlue
EndSelect
EndSub
3)运行程序运行程序,结果如图8.10所示。8.3状态栏状态栏通常位于窗体底部,它为用户提供了当前的操作状态、键盘状态、数据库表中数据使用情况等当前系统状态以及环境状态信息等。用户在编写VisualBasic6.0的应用程序时可以添加状态栏。案例5状态栏的设计
1.学习目标定义一个状态栏,在这个状态栏上显示字符串“状态栏演示”,大写字母锁定键、数字锁定键和插入键的状态,当前日期和当前时间。程序运行后,单击状态栏StatusBar1的“信息面板”,该面板中显示“状态栏演示”;单击状态栏StatusBar1的其他面板,消息框中显示该面板的索引号。状态栏同时显示大写字母锁定键、数字锁定键和插入键的状态,当前日期和当前时间。按一下大写字母键(CapsLock键),大写字母键面板中的文字CAPS由正常变为灰色或由灰色变为正常显示。操作数字锁定键、插入键时有类似反应,如图8.22所示。图8.22状态栏设计效果
2.相关知识
StatusBar控件提供了状态栏功能,该控件由Panels集合构成,最多可包含16个Panel对象,每个面板(又称为窗格)都是一个Panel对象。每个面板中都可以显示一个图像或文本。
1) StatusBar控件的属性右击StatusBar控件,从弹出的菜单中选择“属性”菜单项,打开“属性页”对话框,如图8.23所示。使用该对话框,既可以添加Panel对象,也可以设置每个对象的各种属性。图8.23StatusBar控件的“属性页”对话框下面介绍几个主要属性。①“通用”选项卡。●样式:用于指定状态栏的样式为简单样式还是正常样式。当使用简单样式时,StatusBar控件只显示一个面板,此时,使用该控件的SimpleText属性设置要在面板中显示的字符串的文本;当使用正常样式时,StatusBar控件可以显示多个面板,每个面板中显示不同的信息。●有效:指明用户是否能够操作状态栏控件。●显示提示:指定当用户将鼠标指针移动到状态栏控件的面板中并稍微停留后是否显示该面板的提示。②“窗格”选项卡。●索引:指定面板的索引号(从1开始编号),应用程序能够使用索引号访问各个面板。●文本:指定当前定义面板中显示的文本。该选项对应于Panel对象的Text属性。●工具提示文本:指定当用户将鼠标指针移动到该面板中并稍微停留后显示的该面板的提示。该选项对应于Panel对象的ToolTipText属性。●关键字:指定面板名称。应用程序可以通过该名称访问相应的面板。该选项对应于Panel对象的Key属性。●最小宽度:指定面板的最小宽度。用户调整面板宽度时,如果把面板宽度调整得小于该值,则系统自动将面板宽度恢复为此值。该选项对应于Panel对象的MinWidth属性。●当前宽度:面板的当前宽度。该选项对应于Panel对象的Width属性。●对齐:指定面板中文字的对齐方式。该选项对应于Panel对象的Alignment属性。●样式:指定面板的样式。该选项对应于Panel对象的Style属性,与StatusBar控件的Style属性在意义和作用范围上是不同的。其取值和功能如表8.4所示。表8.4面板样式的值及其功能●斜面:设置面板的三维显示效果。●自动调整大小:指定是否自动调整面板的宽度。该选项对应于Panel对象的AutoSize属性。●图片:用于指定面板中要显示的图像。单击该按钮后,显示一个“选定图片”对话框,从中指定所需的图像文件。若要从面板中去掉图像,可单击“无图片”按钮。●有效:指定面板是否能够使用。●可见:指定面板是否显示出来。
2) StatusBar控件的常用事件用户单击StatusBar控件上的某个面板时,触发PanelClick事件。PanelClick事件过程的格式为:
PrivateSubobject_PanelClick(ByValpanelAsPanel)其中,object是StatusBar控件的名称;panel指明用户单击了哪个面板,该参数由系统自动提供。应该注意的是,当StatusBar控件的Style属性被指定为简单样式时,隐藏了各个面板,此时,无论用户单击StatusBar控件的哪个区域,都不产生PanelClick事件。一般来说,SelectCase语句用于判断用户单击了哪个面板。
3.程序实现
1)界面设计与属性设置操作步骤如下:
(1)创建一个标准EXE工程,将StatusBar控件添加到工具箱中。
(2)在窗体上放置一个名称为StatusBar1的StatusBar控件,以定义该状态栏上要显示的窗格以及各窗格中显示的信息。
(3)打开StatusBar1控件的“属性页”对话框,单击“窗格”选项卡,在“工具提示文本”中填入“信息面板”,“关键字”设为“information”,“样式”设为0,“最小宽度”设为1200。
(4)单击“插入窗格”按钮插入一个新的面板,然后单击“索引”选项后面的右箭头按钮,显示新面板的各种选项;在“工具提示文本”中填入“大写字母锁定键”,“样式”设为1,“最小宽度”设为500。
(5)重复步骤(4),依次定义数字锁定键、插入键的状态、当前日期和当前时间面板,其“样式”分别设为2、3、6、5,“最小宽度”分别设为500、500、1000、700。最后关闭“属性页”对话框。
2)编写代码打开“代码”窗口,在StatusBar1_PanelClick事件过程中输入以下代码:
PrivateSubStatusBar1_PanelClick(ByValPanelAsMSComctlLib.Panel)
SelectCasePanel.Key
Case"information"
Panel.Text="状态栏演示"
CaseElse
MsgBoxPanel.Index'显示面板索引号
EndSelect
EndSub
3)运行程序运行程序,结果如图8.22所示。8.4多重窗体和多文档界面案例6系列产品报价单
1.学习目标设计一个电脑公司的报价单,从此报价单上可以查到某品牌微机的配置及价格。完成后的封面窗体如图8.24(a)所示,建立的配置窗体1、配置窗体2、配置窗体3分别如图8.24(b)、(c)、(d)所示。图8.24系列产品报价单该程序的流程如下:
(1)显示封面窗体。
(2)单击“朝阳系列”命令按钮,则显示配置窗体1,同时封面窗体消失;单击“旭日系列”命令按钮,则显示配置窗体2,同时封面窗体消失;单击“月光系列”命令按钮,则显示配置窗体3,同时封面窗体消失。单击“退出”按钮,则程序结束。
(3)显示某系列微机的配置窗体后,如果单击“返回”按钮,则配置窗体消失,显示封面窗体。通过本案例的学习,掌握多重窗体的设计方法。
2.相关知识多重窗体实际上是单一窗体的集合,也就是说,多重窗体由多个独立的、单一的窗体构成,其中每个单一窗体都有自己的界面和程序代码,可完成不同的操作。利用多重窗体可以灵活地设计较复杂的多功能对话窗口,从而代替系统提供的标准对话框。同设计单一窗体一样,多重窗体的程序设计也分为界面设计、编写代码和运行程序三个步骤。具体地说,首先通过“工程”中的“添加窗体”命令建立多个窗体,然后针对每个窗体进行界面设计、代码编写等,其方法与设计单一窗体相同。在多重窗体的设计中,常用Show方法及Hide方法对各窗体进行管理。● Show方法用来自动装入和显示窗体,格式为:
[窗体名称.]Show● Hide方法使窗体隐藏,即不在屏幕上显示,但仍在内存中,格式为:
[窗体名称.]Hide
3.程序实现
1)界面设计与属性设置操作步骤如下:
(1)新建窗体,再通过菜单栏的“工程”主菜单项,3次选择“添加窗体”菜单项建立3个窗体,其名称和标题属性如表8.5所示。表8.5窗体名称及标题属性
(2)分别建立各个窗体上的控件并设置其属性。首先,建立封面窗体。它是整个程序的门面,应具有较强的艺术性和观赏性,可采用一些精美的图片作背景,本封面窗体由4个命令按钮和1个标签组成,完成后的封面窗体如图8.24(a)所示。其次,在“工程资源管理器”窗口中选择“SunForm”窗体,如图8.25所示,修改其属性建立配置窗体1。配置窗体1有一个返回按钮,配置窗体上的文字可采用Print方法输入。设计好后的配置窗体1如图8.24(b)所示。类似地,可建立配置窗体2和配置窗体3,分别如图8.24(c)和(d)所示。图8.25“工程资源管理器”窗口
2)编写代码如前所述,程序代码是针对每个窗体编写的,其编写方法与编写单一窗体的相同。只要在项目窗口中选择所需要的窗体文件,然后用鼠标左键双击它,就可进入相应窗体的代码窗口。①“封面窗体”有4个命令按钮,其事件过程如下:
PrivateSubCommand1_Click() '单击“朝阳系列”命令按钮
SunForm.Show
FormCover.Hide
EndSub
PrivateSubCommand2_Click() '单击“旭日系列”命令按钮
BrightForm.Show
FormCover.Hide
EndSub
PrivateSubCommand3_Click() '单击“月光系列”命令按钮
MoonForm.Show
FormCover.Hide
EndSub
PrivateSubCommand4_Click() '单击“退出”按钮
End
EndSub②单击“朝阳系列”配置窗体上“返回”命令按钮的事件过程如下:
PrivateSubcmdSun_Click()
SunForm.Hide
FormCover.Show
EndSub③其余的配置窗体上“返回”命令按钮的事件过程与②类似,请读者自行设计。④运行程序。对于多重窗体来说,程序先从哪一个窗体开始执行应加以规定。对于多重窗体,VisualBasic规定必须通过如图8.26所示的工程属性窗口,在“启动对象”中指定其中一个窗体作为启动窗体;如未指定,就把设计时的第一个窗体作为启动窗体。因此,图8.26中“启动对象”选择为Formcover,作为显示文本的第一个窗体。运行本程序,应首先显示“报价单”——封面窗体,然后按用户的选择显示其他的配置窗体。图8.26设置启动窗体
3)运行程序运行程序,结果如图8.24所示。案例7多文档的简易文本编辑器
1.学习目标创建一个具有多文档的简易文本编辑器,如图8.27所示。图8.27简易文本编辑器对话框
2.相关知识多文档界面MDI(Multi-DocumentInterface)是指在一个窗体中含有多个窗体,并可在各个窗体中显示不同的文档。在VB中要创建以文档为中心的应用程序,至少需要两个窗体:一个MDI窗体和一个子窗体。一般来说,应用程序可以包含许多相似或者样式不同的MDI子窗体。也就是说,多重文档是由“父窗口”和“子窗口”构成的。在程序运行时,子窗体显示在MDI父窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。当子窗体最小化时,它的图标显示在MDI窗体的工作空间之内,而不是在任务栏中。如MicrosoftWord和MicrosoftExcel就是多文档界面应用程序,在Word启动之后,可以通过“新建”操作打开多个文档窗口,每个文档窗口都可以编辑、处理一个文档文件,所有文档窗口都被限制在Word父窗口中,且彼此独立。创建MDI应用程序的一般步骤为:
(1)创建MDI窗体;
(2)创建MDI子窗体;
(3)编写代码,处理用户操作以及MDI窗体与MDI子窗体之间的关系。
MDI窗体相当于具有一定限制条件的普通窗体。MDI窗体上只能放置那些具备Align属性(如PictureBox控件、Toolbar控件等)的控件或那些没有可视界面(如Timer控件)的控件,其他控件都不能直接放置到MDI窗体上。
1) MDI的常见属性、方法和事件
MDI所使用的属性、方法和事件与单文档界面基本没有区别,但增加了一些专门用于MDI的属性、方法和事件,如MDIChild属性、Arrange方法、QuerryUnload事件。
(1) MDIChild属性。如果一个窗体的MDIChild属性被设为True,则该窗体作为父窗体的子窗体,该属性只能通过属性窗口设置,不能在程序代码中设置。在设置该属性前,必须先定义MDI父窗体。
(2) Arrange方法。Arrange方法是指用不同的方式排列MDI中的子窗体(或其图标)。语法格式如下:
<MDIForm名>.Arrange<参数>其中,“MDIForm名”是指需要重新排列子窗体(或其图标)的MDI窗体的名字;“参数”是一个整数,表示所使用的排列方式,它有4个设置值,如表8.6所示。表8.6Arrange的参数设置值
(3) QuerryUnload事件。QuerryUnload事件在关闭窗体或结束应用程序之前发生,可以给用户一个机会以保存窗体中的数据。当关闭MDI窗体时,首先在MDI窗体上发生QuerryUnload事件,然后在所有子窗体上发生。如果所有窗体上都没有QuerryUnload事件,则在子窗体上发生Unload事件,然后在MDI窗体上发生Unload事件。
QuerryUnload事件在窗体关闭前被调用,因此常在QuerryUnload事件中编写保护程序。
QuerryUnload事件的语法格式为:
PrivateSubForm_Quer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吊车安全教育
- 爱国精神教育
- 保税进口核心流程解析
- 2026压力性损伤(压疮)治疗与护理典型案例分析解读
- 病理报告标准化流程
- 2026新生儿脐静脉置管护理解读
- 儿童地理启蒙教育体系构建
- 设计成果汇报
- 科学素养专题教育活动实施框架
- 蘑菇中毒安全教育
- 心电图室质量控制与改进措施范文
- 中建专项施工升降机拆除方案
- 地膜覆盖玉米生产技术玉米
- DB37/T 5252-2023 房屋建筑施工扬尘防治技术规程
- 富士相机FUJIFILM X100T用户手册
- 职校开学第一课课件:谁说职业没前途
- 二氧化氯在肿瘤治疗中的协同作用
- 垃圾清运服务投标方案技术方案
- 海运公司船员合同
- 2024年辽宁化工行业职业技能竞赛(化工总控工赛项)理论考试题库及答案
- 跳远 教案(大学体育专业)
评论
0/150
提交评论