1界面设计本章要点:菜单的设计工具栏和状态栏的设计对话框的设计多窗体程序设计与环境应用第8章第八章界面设计210.1菜单的设计Windows环境下几乎所有的应用软件都通过菜单实现各种操作。菜单将应用程序的各种操作分组显示在界面上,用户可以方便地从菜单中选择执行各种功能,菜单可使界面更干练。两种基本菜单类型下拉式菜单弹出式菜单第八章界面设计310.1.1下拉式菜单子菜单菜单命令主菜单栏主菜单标题分隔条子菜单访问键顶级菜单快捷键1.下拉式菜单的结构第八章界面设计42.菜单编辑器菜单项:看成控件,具有其属性、事件、方法。菜单项也称为菜单控件。菜单设计:通过“菜单编辑器”完成。1.首先使窗体成为当前窗体2.使用以下方法打开菜单编辑器:执行“工具”菜单下的“菜单编辑器”命令单击标准工具栏的“菜单编辑器”按钮从窗体快捷菜单中选择“菜单编辑器”命令3.菜单编辑器结构:属性区、编辑区、菜单列表区第八章界面设计5CaptionNameIndexShortcutCheckedEnabledVisibleWindowList(MDI)NegotiatePositionHelpContextID注:标题框中键入“-”和“&”符号的作用。不能给顶级菜单项加快捷键。属性区菜单列表区编辑区第八章界面设计6【例8-1】设计菜单界面,如下图所示。下拉菜单中的子菜单项用于对文本框Text1设置字体、字号和效果。其中,效果子菜单下的各菜单项具有复选功能,设运行初始时各项前面没有√符号,与文本框的初始状态一致。Text1第八章界面设计7标题名称索引快捷键说明字体(&F)AA访问键Alt+F....宋体AA11Ctrl+A定义成控件数组AA1;AA1(3)用于生成分隔条....黑体AA12Ctrl+B....-AA13....隶书AA14Ctrl+C....楷体_GB2312AA15Ctrl+D字号(&S)BB访问键Alt+S....14BB11定义成控件数组BB1....16BB12....18BB13....20BB14菜单编辑器设置如下表:第八章界面设计8标题名称索引快捷键说明效果(&E)DD定义访问键Alt+E….删除线DD1….下划线DD2….粗体DD3….斜体DD4(续表)第八章界面设计91)“字体”菜单下的菜单项设计成一个控件数组AA1,共享以下事件过程:PrivateSubAA1_Click(IndexAsInteger)Text1.Font=AA1(Index).CaptionEndSub2)“字号”菜单下的菜单项设计成一个控件数组BB1,共享以下事件过程:PrivateSubBB1_Click(IndexAsInteger)Text1.FontSize=BB1(Index).CaptionEndSub第八章界面设计103)“效果”菜单下的各菜单项具有复选功能,每次单击时应切换成另一种状态,因此要判断当前菜单项的Checked属性,各事件过程如下:PrivateSubDD1_Click()Text1.FontStrikethru=Not_Text1.FontStrikethruDD1.Checked=NotDD1.Checked'设置复选功能EndSub第八章界面设计11PrivateSubDD2_Click()Text1.FontUnderline=Not_Text1.FontUnderlineDD2.Checked=NotDD2.Checked‘设置复选功能EndSubPrivateSubDD3_Click()Text1.FontBold=NotText1.FontBoldDD3.Checked=NotDD3.Checked‘设置复选功能EndSub第八章界面设计12PrivateSubDD4_Click()Text1.FontItalic=NotText1.FontItalicDD4.Checked=NotDD4.Checked‘设置复选功能EndSubDD4_Click也可用如下代码实现:PrivateSubDD4_Click()IfDD4.Checked=TrueThenText1.FontItalic=FalseDD4.Checked=FalseElseText1.FontItalic=TrueDD4.Checked=TrueEndIfEndSubDD1、DD2、DD3的单机事件能否类同?第八章界面设计1310.1.2弹出式菜单弹出式菜单:上下文菜单、快捷菜单、右键菜单为某对象设计弹出式菜单的步骤:1)在菜单编辑器中设计各菜单项,然后将顶级菜单设置为不可见。2)在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单:[窗体名.]PopupMenu菜单名,flags[,x[,y[,boldcommand]]]]功能:在当前鼠标位置或指定的坐标位置显示弹出式菜单。第八章界面设计14参数:窗体名:指菜单所在的位置,如果省略,则默认为是当前窗体。菜单名:指在菜单编辑器中设计的菜单项(至少有一个子菜单)的名称。Flags:可选项,可以是一个数值或常量,用于指定弹出式菜单的位置和行为,取值见表。如果要同时指定位置和行为时,则两个参数值用Or连接,如:4Or2x、y:指定显示弹出式菜单的x坐标和y坐标。省略时为鼠标坐标。boldcommand:指定弹出式菜单中要显示为黑体的菜单控件的名称。如果该省略参数,则弹出式菜单中没有以黑体字出现的菜单项。[窗体名.]PopupMenu菜单名,flags[,x[,y[,boldcommand]]]]第八章界面设计16【例8-2】在例8-1的基础上设计窗体和文本框的弹出式菜单。如下图所示。窗体的弹出式菜单文本框的弹出式菜单Text1第八章界面设计17设计步骤:1)在菜单编辑器上增加以下设置:标题名称可见说明窗体快捷菜单FF不选中....红色背景FF1选中使窗体背景色成为红色....绿色背景FF2选中使窗体背景色成为绿色....默认背景FF3选中使窗体背景色成为默认色文本框快捷菜单EE不选中....增加一磅EE1选中使文本框字体大小增加一磅....减少一磅EE2选中使文本框字体大小减少一磅第八章界面设计182)在窗体的MouseDown事件过程中编写代码PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenPopupMenuFF,8Or0,,,FF3EndIfEndSub右上角位于坐标处FF3菜单项显示为粗体只接受左键单击x,y省略,但要保留逗号第八章界面设计193)在文本框的MouseDown事件过程中编写代码PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenPopupMenuEE,0Or0EndIfEndSub参数Button:1—按下鼠标的左按钮2—按下鼠标的右按钮4—按下鼠标的中间按钮左上角位于坐标处只接受左键单击第八章界面设计204)在窗体模块的通用声明段声明变量Fcolor,用于保存窗体的初始颜色:DimFcolorAsLong5)在窗体的Load事件过程中保存窗体的初始背景颜色:PrivateSubForm_Load()Fcolor=Form1.BackColorEndSub第八章界面设计216)编写实现菜单命令功能的代码PrivateSubFF1_Click()Form1.BackColor=vbRedEndSubPrivateSubFF2_Click()Form1.BackColor=vbGreenEndSubPrivateSubFF3_Click()Form1.BackColor=FcolorEndSub第八章界面设计22PrivateSubEE1_Click()Text1.FontSize=Text1.FontSize+1EndSubPrivateSubEE2_Click()Text1.FontSize=Text1.FontSize–1EndSubEndSub第八章界面设计2310.2工具栏和状态栏的设计作用:常用于提供对最常用的菜单命令的快速访问设计:手工方式;使用工具栏控件10.2.1用手工方式制作工具栏1)在窗体上放置一个图片框,设置其Align属性为:1-AlignTop,调整好图片框的高度。2)在图片框中放置控件。3)给控件装入一定的图片。4)设置控件的ToolTipText属性,添加适当的提示。5)为各工具栏控件编写代码。如果工具栏控件的功能已经包括在某菜单项中,则可以直接调用菜单项的相应事件过程。第八章界面设计24【例8-3】如下图,在窗体上添加图片框,图片框中放置4个复选框控件,即手工工具栏。给复选框的ToolTipText属性分别设置功能提示:斜体、粗体、删除线、下划线。Check1~Check4第八章界面设计25分别在复选框控件的Click事件过程中编写代码:PrivateSubCheck1_Click()Text1.FontItalic=Check1.ValueEndSubPrivateSubCheck2_Click()Text1.FontBold=Check2.ValueEndSubPrivateSubCheck3_Click()Text1.FontStrikethru=Check3.ValueEndSubPrivateSubCheck4_Click()Text1.FontUnderline=Check4.ValueEndSub第八章界面设计2610.2.2使用ToolBar控件制作工具栏设计步骤:1)向工具箱添加ToolBar控件、ImageList控件。工程→部件→选择“MicrosoftWindowsCommonControls6.0”2)向窗体上添加ToolBar控件、ImageList控件,常用ImageList控件提供工具栏所需的图片。3)设置ImageList控件的“属性页”,定义图像集。4)设置ToolBar控件的“属性页”。定义按钮对象集。引用索引号为n的按钮:Buttons(n)例:设置Toolbar1中索引号为2的按钮的标题。Toolbar1.Buttons(2).Caption=显示5)编写代码:在ButtonClick事件过程或ButtonMenuClick事件过程中编写。第八章界面设计27【例8-4】用Toolbar控件设计工具栏,界面如下图所示。运行时,对文本框进行“显示”、“清除”和“加锁”操作;亦可对文本框的格式进行修饰。ToolBar1设计步骤:1)向工具箱添加ToolBar控件、ImageList控件。2)向窗体上添加ToolBar控件、ImageList控件,在ImageList“图像”选项卡中添加工具栏按钮所需要的各图片,记住各图片对应的索引值。第八章界面设计283)设置ImageList控件的“属性页”,定义图像集4)设置ToolBar控件的“属性页”。定义按钮对象集5)编写代码:在ButtonClick事件过程或ButtonMenuClick事件过程中编写。索引关键字样式工具文本提示图像1A12-tbrButtonGroup显示12A22-tbrButtonGroup清除23A32-tbrButtonGroup加锁343-tbrSeperator5A41-trbCheck加粗46A51-trbCheck斜体57A61-trbCheck删除线6设置ToolBar控件的属性页:第八章界面设计29设置菜单的属性页:标题名称一级菜单命令(&M)M二级菜单显示Dir清除Clear加锁Lock一级菜单修饰X二级菜单加粗B斜体I删除线U第八章界面设计30代码如下:PrivateSubForm_Load()Text1.Text=欢迎使用VB程序设计Text1.SelStart=Le