vb程序设计第2版第10章-课件_第1页
vb程序设计第2版第10章-课件_第2页
vb程序设计第2版第10章-课件_第3页
vb程序设计第2版第10章-课件_第4页
vb程序设计第2版第10章-课件_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

界面设计本章要点:菜单的设计工具栏的设计状态栏的设计对话框的设计第10章1界面设计本章要点:第10章110.1菜单的设计Windows环境下几乎所有的应用软件都通过菜单实现各种操作。菜单将应用程序的各种操作分组显示在界面上,用户可以方便地从菜单中选择执行各种功能。

两种基本菜单类型:

下拉式菜单弹出式菜单210.1菜单的设计Windows环境下几乎所有的10.1.1下拉式菜单子菜单菜单命令主菜单栏主菜单标题分隔条子菜单访问键顶级菜单快捷键

1.下拉式菜单的结构310.1.1下拉式菜单子菜单命令主菜单栏主菜单标题分隔条2.菜单编辑器菜单项:看成控件,具有其属性、事件、方法。菜单项也称为菜单控件。菜单设计:通过“菜单编辑器”完成。首先使窗体成为当前窗体使用以下方法打开菜单编辑器:执行“工具”菜单下的“菜单编辑器”命令单击标准工具栏的“菜单编辑器”按钮从窗体快捷菜单中选择“菜单编辑器”命令菜单编辑器结构:属性区、编辑区、菜单列表区42.菜单编辑器4CaptionNameIndexShortcutCheckedEnabledVisibleWindowList(MDI)

NegotiatePositionHelpContextID

注:标题框中键入“-”和“&”符号的作用。不能给顶级菜单项加快捷键。

属性区菜单列表区编辑区5CaptionNameIndexShortcutCheck【例10-1】设计菜单界面,如下图所示。下拉菜单中的子菜单项用于对文本框Text1设置字体、字号、文字颜色和文字效果。其中,效果子菜单下的各菜单项具有复选功能,设运行初始时各项前面没有√符号,与文本框的初始状态一致。各子菜单结构见P194Text16【例10-1】设计菜单界面,如下图所示。下拉菜单中的子菜单项标题名称索引快捷键说明字体(&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菜单编辑器设置如下表:7标题名称索引快捷键说明字体(&F)AA访问键访问键Alt+C说明

DD4....斜体

DD3....粗体DD2....下划线

DD1....删除线

DD效果(&E)

CC3....蓝色

CC2....绿色

CC1....红色CC颜色(&C)快捷键索引名称标题(续表)访问键Alt+E8访问键Alt+C说明DD4....斜体D1)“字体”菜单下的菜单项设计成一个控件数组AA1,共享以下事件过程:PrivateSubAA1_Click(IndexAsInteger)Text1.Font=AA1(Index).CaptionEndSub2)“字号”菜单下的菜单项设计成一个控件数组BB1,共享以下事件过程:PrivateSubBB1_Click(IndexAsInteger)Text1.FontSize=Val(BB1(Index).Caption)EndSub91)“字体”菜单下的菜单项设计成一个控件数组AA1,共享以3)“颜色”菜单下的各菜单项为独立的菜单控件,因此应分别在其单击事件过程中编写代码,各事件过程如下:PrivateSubCC1_Click()Text1.ForeColor=vbRedEndSubPrivateSubCC2_Click()Text1.ForeColor=vbGreenEndSubPrivateSubCC3_Click()Text1.ForeColor=vbBlueEndSub103)“颜色”菜单下的各菜单项为独立的菜单控件,因此应分别在4)“效果”菜单下的各菜单项具有复选功能,每次单击时应切换成另一种状态,因此要判断当前菜单项的Checked属性,各事件过程如下:PrivateSubDD1_Click()IfDD1.Checked=TrueThenText1.FontStrikethru=FalseDD1.Checked=FalseElseText1.FontStrikethru=TrueDD1.Checked=TrueEndIfEndSub114)“效果”菜单下的各菜单项具有复选功能,每次单击时应切换PrivateSubDD2_Click()IfDD2.Checked=TrueThenText1.FontUnderline=FalseDD2.Checked=FalseElseText1.FontUnderline=TrueDD2.Checked=TrueEndIfEndSub12PrivateSubDD2_Click()12PrivateSubDD3_Click()IfDD3.Checked=TrueThenText1.FontBold=FalseDD3.Checked=FalseElseText1.FontBold=TrueDD3.Checked=TrueEndIfEndSub13PrivateSubDD3_Click()13PrivateSubDD4_Click()IfDD4.Checked=TrueThenText1.FontItalic=FalseDD4.Checked=FalseElseText1.FontItalic=TrueDD4.Checked=TrueEndIfEndSub14PrivateSubDD4_Click()14【例10-2】在窗体上设计菜单,菜单标题为“图像”,图像菜单下包括以下4个菜单项:1)载入:名称为LoadPic,用于向图片框中装入一幅图像,初始的Enabled属性为True。2)清除:名称为ClearPic,用于清除图片框中的图像,初始的Enabled属性为False。3)显示:名称为ShowPic,用于显示图片框中的图像,初始的Enabled属性为False。4)隐藏:名称为HidePic,用于隐藏图片框中的图像,初始的Enabled属性为False。15【例10-2】在窗体上设计菜单,菜单标题为“图像”,图像菜单运行时,界面的初始状态如图a,单击“载入”命令可以在打开的输入框中输入要载入的图像文件名,确定后将指定的图像显示在图片框Picture1中,这时的“图像”菜单变成图b的状态。这时如果选择“清除”命令,则清除图片框中的图片,菜单变成图a所示;如果选择“隐藏”命令,则隐藏图片框,菜单变成图c所示,而单击“显示”命令菜单又回到图b的状态。a)b)c)16运行时,界面的初始状态如图a,单击“载入”命令可以在打开的输各菜单项的Click事件过程如下:PrivateSubClearPic_Click()'清除Picture1.Picture=LoadPicture()ClearPic.Enabled=FalseLoadPic.Enabled=TrueHidePic.Enabled=FalseShowPic.Enabled=FalseEndSub17各菜单项的Click事件过程如下:17PrivateSubLoadpic_Click()'载入PicName=InputBox("请输入图像文件名")

OnErrorGoToErrHandlerPicture1.Picture=LoadPicture(PicName)ClearPic.Enabled=TrueLoadPic.Enabled=FalseHidePic.Enabled=TrueShowPic.Enabled=FalseExitSub'正常执行则到这里结束ErrHandler:'错误处理程序入口MsgBox"图像加载错误"EndSub18PrivateSubLoadpic_Click()PrivateSubHidePic_Click()'隐藏Picture1.Visible=FalseClearPic.Enabled=FalseLoadPic.Enabled=FalseHidePic.Enabled=FalseShowPic.Enabled=TrueEndSubPrivateSubShowPic_Click()'显示Picture1.Visible=TrueClearPic.Enabled=TrueLoadPic.Enabled=FalseHidePic.Enabled=TrueShowPic.Enabled=FalseEndSub19PrivateSubHidePic_Click()将本例对Enabled属性的设置改成对Visible属性的设置可以修改成将无效的菜单项隐藏起来,只显示可用的菜单项。用前面的方法建立的菜单,菜单项是固定的,菜单项不能自动增减。尽管可以通过设置菜单项的Visible属性使某些菜单项暂时隐藏起来,在必要的时候再将其显示出来,但也必须首先在菜单编辑器中设计所有的菜单项。在某些情况下,菜单项的个数在设计时是不可预测的,只能在程序运行时动态增减,用前面的方法就难以实现。要实现菜单项的动态增减,可以通过菜单数组来实现。通常,首先设计一个菜单项,定义该菜单项为菜单数组的第一项,即在菜单编辑器中,设置其“索引”属性值为0,“可见”属性为False(不可见)。在需要增加菜单项时,使用Load方法向该菜单数组增加新的菜单项,并对新增的菜单项设置标题(Caption)和可见(Visible)属性;在需要减少菜单项时,使用Unload方法从该菜单数组中删除一项。20将本例对Enabled属性的设置改成对Visible属性的设【例10-3】设计菜单,使得运行时初始界面如下图a所示。主菜单项“文件”下有两个固定的子菜单项“打开”和“关闭”及分隔线。要求:运行时单击“打开”菜单项在分隔线下面增加一个新的菜单项,单击“关闭”命令时删除分隔线下面一个指定的菜单项。单击新增的菜单项可以执行相应的应用程序。a)b)21【例10-3】设计菜单,使得运行时初始界面如下图a所示。主菜主要设计步骤:1)执行“工具”菜单中的“菜单编辑器”命令,打开菜单编辑器,按下表设计菜单。标题名称索引可见说明文件(&F)MainFileTrue定义访问键Alt+F....打开SubOpenTrue固定菜单项....关闭SubCloseTrue....-SptBarTrue分隔条....SubMenu0False定义成控件数组SubMenu22主要设计步骤:标题名称索引可见说明文件(&2)在窗体模块中定义模块级变量MenuNum,用于保存当前SubMenu菜单数组的最大下标:

DimMenuNumAsInteger3)编写“打开”菜单项的Click事件过程如下:

PrivateSubSubOpen_Click()

OpenFileName=InputBox("请输入文件名称")

IfTrim(OpenFileName)<>""Then

MenuNum=MenuNum+1

LoadSubMenu(MenuNum)

SubMenu(MenuNum).Caption=OpenFileName

SubMenu(MenuNum).Visible=True

EndIf

EndSub232)在窗体模块中定义模块级变量MenuNum,用于保存当前S4)编写“关闭”菜单项的Click事件过程如下:

PrivateSubSubClose_Click()

N=Val(InputBox("请指定关闭第几个文件"))

IfN>MenuNumOrN<1Then

MsgBox"超出范围!"

Else

ForI=NToMenuNum-1

SubMenu(I).Caption=SubMenu(I+1).Caption

NextI

UnloadSubMenu(MenuNum)

MenuNum=MenuNum-1

EndIf

EndSub244)编写“关闭”菜单项的Click事件过程如下:245)新增加的菜单项是一些应用程序的名字(包括路径)。要实现单击这些菜单项时能够执行相应的文件名指定的应用程序,需要在菜单数组的Click事件过程中应编写如下代码:PrivateSubSubMenu_Click(IndexAsInteger)

ShellSubMenu(Index).Caption,vbNormalFocusEndSub255)新增加的菜单项是一些应用程序的名字(包括路径)。要实现单10.1.2弹出式菜单弹出式菜单:上下文菜单、快捷菜单、右键菜单

为某对象设计弹出式菜单的步骤:1)在菜单编辑器中设计各菜单项,然后将顶级菜单设置为不可见。2)在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单:

[<窗体名>.]PopupMenu<菜单名>

,flags[,x[,y[,boldcommand]]]]功能:在当前鼠标位置或指定的坐标位置显示弹出式菜单。2610.1.2弹出式菜单弹出式菜单:上下文菜单、快捷菜单参数:<窗体名>:指菜单所在的位置,如果省略,则默认为是当前窗体。<菜单名>:指在菜单编辑器中设计的菜单项(至少有一个子菜单)的名称。Flags:可选项,可以是一个数值或常量,用于指定弹出式菜单的位置和行为,取值见P199表10-3和表10-4。如果要同时指定位置和行为时,则将两个参数值用Or连接,如:

4Or2x、y:指定显示弹出式菜单的x坐标和y坐标。省略时为鼠标坐标。boldcommand:指定弹出式菜单中要显示为黑体的菜单控件的名称。如果该省略参数,则弹出式菜单中没有以黑体字出现的菜单项。27参数:27【例10-4】在例10-1的基础上设计窗体和文本框的弹出式菜单。如下图所示。窗体的弹出式菜单文本框的弹出式菜单Text128【例10-4】在例10-1的基础上设计窗体和文本框的弹出式菜标题

名称

可见

文本框快捷菜单

EE

....增加1磅

EE1

....减少1磅

EE2....锁定EE3窗体快捷菜单FF

....红色背景FF1

....绿色背景FF2

....默认背景FF3

设计步骤:

1)在菜单编辑器上增加以下设置:29标题名称可见文本框快捷菜单EE....增加1磅2)在文本框的MouseDown事件过程中编写代码PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then

PopupMenuEE,0Or0EndIfEndSub参数Button:

1—按下鼠标的左按钮2—按下鼠标的右按钮4—按下鼠标的中间按钮左上角位于坐标处只接受左键单击302)在文本框的MouseDown事件过程中编写代码参数Bu3)在窗体的MouseDown事件过程中编写代码PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then

PopupMenuFF,8Or0,,,FF3

EndIfEndSub右上角位于坐标处FF3菜单项显示为粗体只接受左键单击x,y省略,但要保留逗号313)在窗体的MouseDown事件过程中编写代码右上角位于4)在窗体模块的通用声明段声明变量Fcolor,用于保存窗体的初始颜色:DimFcolorAsLong5)在窗体的Load事件过程中保存窗体的初始背景颜色:PrivateSubForm_Load()Fcolor=Form1.BackColorEndSub324)在窗体模块的通用声明段声明变量Fcolor,用于保存窗6)编写实现菜单命令功能的代码PrivateSubEE1_Click()Text1.FontSize=Text1.FontSize+1EndSubPrivateSubEE2_Click()Text1.FontSize=Text1.FontSize–1EndSubPrivateSubEE3_Click()IfEE3.Caption="锁定"ThenEE3.Caption="取消锁定"Text1.Locked=TrueElseEE3.Caption="锁定"

Text1.Locked=FalseEndIfEndSub336)编写实现菜单命令功能的代码33PrivateSubFF1_Click()Form1.BackColor=vbRedEndSubPrivateSubFF2_Click()Form1.BackColor=vbGreenEndSubPrivateSubFF3_Click()Form1.BackColor=FcolorEndSub34PrivateSubFF1_Click()3410.2工具栏的设计作用:常用于提供对最常用的菜单命令的快速访问设计:手工方式;使用工具栏控件10.2.1用手工方式制作工具栏1)在窗体上放置一个图片框,设置其Align属性为:1-AlignTop,调整好图片框的高度。2)在图片框中放置控件。3)给控件装入一定的图片。4)设置控件的ToolTipText属性,添加适当的提示。5)为各工具栏控件编写代码。如果工具栏控件的功能已经包括在某菜单项中,则可以直接调用菜单项的相应事件过程。3510.2工具栏的设计作用:常用于提供对最常用的菜单【例10-5】在例10-4的基础上添加工具栏。如下图。放置4个复选框控件,分别用于完成“效果”菜单下的四个功能。给复选框的ToolTipText属性分别设置功能提示:删除线、下划线、粗体、斜体。Check1~Check436【例10-5】在例10-4的基础上添加工具栏。如下图。放置分别在复选框控件的Click事件过程中编写代码:PrivateSubCheck1_Click()Text1.FontStrikethru=Check1.ValueEndSubPrivateSubCheck2_Click()Text1.FontUnderline=Check2.ValueEndSubPrivateSubCheck3_Click()Text1.FontBold=Check3.ValueEndSubPrivateSubCheck4_Click()Text1.FontItalic=Check4.ValueEndSub37分别在复选框控件的Click事件过程中编写代码:3710.2.2使用ToolBar控件制作工具栏设计步骤:1)向工具箱添加ToolBar控件、ImageList控件。工程→部件→选择“MicrosoftWindowsCommonControls6.0”

2)向窗体上添加ToolBar控件、ImageList控件,常用ImageList控件提供工具栏所需的图片。3)设置ImageList控件的“属性页”,定义图像集。4)设置ToolBar控件的“属性页”。定义按钮对象集。引用索引号为n的按钮:Buttons(n)

例:设置Toolbar1中索引号为3的按钮的标题。

Toolbar1.Buttons(3).Caption="显示"5)编写代码:在ButtonClick事件过程或ButtonMenuClick事件过程中编写。3810.2.2使用ToolBar控件制作工具栏设计步【例10-6】用Toolbar控件设计工具栏,界面如下图所示,运行时,当按下箭头按钮时,图形将沿着箭头指定的方向移动,当按下形状按钮组中的任何一个按钮时,图形将变成相应的形状。按“Stop”按钮停止移动。Timer1Interval:100Enabled:FalseImageList1Shape1ToolBar139【例10-6】用Toolbar控件设计工具栏,界面如下图所示索引关键字样式工具文本提示图像说明1A12-tbrButtonGroup圆1具有选项按钮的特点2A22-tbrButtonGroup椭圆23A32-tbrButtonGroup圆角矩形34A42-tbrButtonGroup矩形45S13-tbrSeperator分隔条6B10-tbrDefault上移5具有命令按钮的特点7B20-tbrDefault下移68B30-tbrDefault左移79B40-tbrDefault右移810S23-tbrSeperator分隔条11C10-tbrDefault停止9设置ToolBar控件的属性页:40索引关键字样式工具文本提示图像说明1A12-tbrButtoDimDirectionAsInteger

'Direction做为移动方向的标志PrivateSubTimer1_Timer()

'

根据箭头按钮决定移动方向'设每次移动步长为50Twips,当移动到窗体边缘时不再移动SelectCaseDirectionCase1

'

如果选择向上移动

IfShape1.Top-50>Toolbar1.Height_ThenShape1.Top=Shape1.Top-50Case2

'

如果选择向下移动

IfShape1.Top+Shape1.Height+50<Form1.ScaleHeight_ThenShape1.Top=Shape1.Top+50Case3

'

如果选择向左移动

IfShape1.Left-50>0ThenShape1.Left=Shape1.Left-50Case4

'

如果选择向右移动

IfShape1.Left+Shape1.Width+50<Form1.ScaleWidth_ThenShape1.Left=Shape1.Left+50EndSelectEndSub代码如下:41DimDirectionAsInteger'PrivateSubToolbar1_ButtonClick_(ByValButtonAsMSComctlLib.Button)'

根据按下的形状按钮分情况进行处理SelectCaseButton.IndexCase1Shape1.Shape=3'

设图形形状为圆形

Case2Shape1.Shape=2

'

设图形形状为椭圆

Case3Shape1.Shape=4'

设图形形状为圆角矩形

Case4Shape1.Shape=0

'

设图形形状为矩形42PrivateSubToolbar1_ButtonCliCase6Direction=1

'Direction为1表示上移

Timer1.Enabled=TrueCase7Direction=2

'Direction为2表示下移

Timer1.Enabled=TrueCase8Direction=3

'Direction为3表示左移

Timer1.Enabled=TrueCase9Direction=4

'Direction为4表示右移

Timer1.Enabled=TrueCase11'单击“停止”按钮关闭定时器,停止移动

Timer1.Enabled=FalseEndSelectEndSub43Case64310.3对话框的设计对话框:特殊类型的窗体对象。作用:是用户和应用程序交互的主要途径。建立方法:使用预定义对话框,即输入框、消息框。定义对话框。使用CommonDialog控件创建通用对话框。4410.3对话框的设计对话框:特殊类型的窗体对象。4410.3.1自定义对话框设计步骤:1)添加窗体:工程添加窗体。2)将窗体定义成对话框风格。如:不能移动、改变尺寸、最大或最小化例:BorderStyle设置为1—单边框,不能改变大小ControlBox设置为False—删除控制菜单框

MaxButton设置为False—删除最大化按钮MinButton设置为False—删除最小化按钮3)在对话框上添加按钮,如“确定”与“取消”按钮。4)在对话框上添加其它控件。5)在适当的位置编写显示对话框的代码。4510.3.1自定义对话框设计步骤:45两种显示方式:模式对话框与无模式对话框。显示模式对话框

窗体名.ShowvbModal或窗体名.Show1例如:Form2.ShowvbModal显示无模式对话框

窗体名.ShowvbModeless或窗体名.Show0或窗体名.Show例如:Form2.ShowvbModeless为确保对话框可以随其父窗体的最小化而最小化,随其父窗体的关闭而关闭,需要在Show方法中定义父窗体。例如:PrivateSubCommand1_Click()Form2.ShowvbModeless,Form1EndSub46两种显示方式:模式对话框与无模式对话框。466)编写实现对话框功能的的代码,如“确定”按钮和“取消”按钮的单击事件过程。不同的对话框所完成的功能不同,因此应根据实际要求编写代码7)编写从对话框退出的代码例如:UnloadForm2或:Form2.HideUnload语句把对话框从内存中删除,该对话框本身以及它的控件都从内存中卸载。而Hide方法只是通过设置对话框的Visible属性为False将其从视窗中删除。该对话框以及它的控件仍留在内存中。476)编写实现对话框功能的的代码,如“确定”按钮和“取消”按【例10-7】设计应用程序,包含一个主菜单界面和一个对话框,在主菜单界面单击某“运行”菜单项,将打开一个模式对话框,在对话框中指定要运行的文件名及其运行方式(正常、最大化、最小化),单击“确定”按钮按指定的方式运行指定的文件,如果输入文件名错误,将给出警告并返回该对话框;单击“取消”按钮返回主菜单界面。Command2Text1Option1Option2Option3Command1a)b)48【例10-7】设计应用程序,包含一个主菜单界面和一个对话框,设计步骤:1)新建一个空白工程,将当前窗体Form1作为主菜单界面,按设计下拉式菜单的方法设计菜单(如图a)。设“运行”菜单项的名称为RunFile2)使用“工程”菜单下的“添加窗体”命令,在工程中添加一个窗体Form2,设置Form2的BorderStyle属性值为1,使其具有对话框风格。如图b所示在对话框上添加各控件。将“确定”按钮的Defalut属性设置为True,将“取消”按钮的Cancel属性设置为True。3)编写窗体Form1的“运行”菜单项的Click事件过程,以显示对话框Form2,代码如下:PrivateSubRunFile_Click()

Form2.Show1EndSub49设计步骤:494)编写对话框Form2的“确定”按钮的事件过程:PrivateSubCommand1_Click()'“确定”按钮

OnErrorGoToErrorHandler

FName=Trim(Text1.Text)

IfOption1.Value=TrueThenShellFName,1

IfOption2.Value=TrueThenShellFName,3

IfOption3.Value=TrueThenShellFName,2

ExitSubErrorHandler:

'错误处理程序入口

MsgBox"不能运行该文件",,"注意"EndSub504)编写对话框Form2的“确定”按钮的事件过程:505)编写对话框Form2的“取消”按钮的事件过程:PrivateSubCommand2_Click()UnloadMeEndSub515)编写对话框Form2的“取消”按钮的事件过程:5110.3.2通用对话框使用通用对话框控件(CommonDialog)可以创建多种标准对话框。设计步骤如下:1)添加:工程部件选择“MicrosoftCommonDialogControls6.0”2)在窗体的任意位置添加通用对话框控件。3)设置通用对话框控件的“属性页”。4)在代码中使用以下方法打开对话框。ShowOpen:显示“打开文件”对话框ShowSave:显示“文件存储”对话框ShowColor:显示“颜色”对话框ShowFont:显示“字体”对话框

ShowPrinter:显示“打印”对话框ShowHelp:显示“帮助”对话框5210.3.2通用对话框使用通用对话框控件(Com1.文件对话框属性页:DialogTitleFileNameInitDirFilterFlagsDefaultExtMaxFileSizeFilterIndexCancelError531.文件对话框DialogTitleFileNameIn【例10-8】使用打开文件对话框,在运行时打开一幅图像。在窗体Form1上放置一个图像控件、一个通用对话框控件、一个命令按钮。Image1CommonDialog1Command1设计界面:54【例10-8】使用打开文件对话框,在运行时打开一幅图像。Im其中,CommonDialog1的属性页设置如下:Allfiles|*.*|BmpFiles|*.bmp|IconFiles|*.ico指文件名55其中,CommonDialog1的属性页设置如下:All

如果通过编写代码设置属性,可以在窗体的Load事件过程中编写以下代码:PrivateSubForm_Load()CommonDialog1.DialogTitle="请选择图像文件"CommonDialog1.InitDir="C:\winnt"CommonDialog1.FileName="Greenstone.bmp"CommonDialog1.Filter="AllFiles|*.*|BmpFiles|*.bmp|IconFiles|*.ico"CommonDialog1.CancelError=TrueEndSub56如果通过编写代码设置属性,可以在窗体的Load事件“装入图像”按钮代码如下:PrivateSubCommand1_Click()CommonDialog1.ShowOpenImage1.Picture=_LoadPicture(CommonDialog1.FileName)EndSub57“装入图像”按钮代码如下:57在对话框中单击“取消”按钮的处理:不处理:不设置“取消引发错误”处理:设置“取消引发错误”,编写代码如下:PrivateSubCommand1_Click()

OnErrorGoToErrHandlerCommonDialog1.ShowOpenImage1.Picture=_LoadPicture(CommonDialog1.FileName)ExitSub

ErrHandler:MsgBox"打开文件错误"ExitSubEndSub打开图像取消58在对话框中单击“取消”按钮的处理:打开图像取消58颜色:Color标志:FlagsFontSizeMinMaxFontName2.颜色、字体对话框属性页:通常:257、258、259仅当标志属性设为8192时起作用59颜色:ColorFontSizeMinMaxFont【例10-9】设计如图所示的界面,运行时单击“背景色”按钮打开颜色对话框,在对话框中选择的颜色用于设置文本框的背景颜色,单击“字体”按钮打开字体对话框,在对话框中选择字体、效果及颜色,用于设置文本框文字的字体、效果及颜色。CommonDialog1Text1设置Flag:259设计界面:60【例10-9】设计如图所示的界面,运行时单击“背景色”按钮打“背景色”按钮Command1的Click事件过程如下:PrivateSubCommand1_Click()CommonDialog1.ShowColorText1.BackColor=CommonDialog1.ColorEndSub61“背景色”按钮Command1的Click事件过程如下:61“字体”按钮Command2的Click事件过程如下:PrivateSubCommand2_Click()CommonDialog1.ShowFontText1.Font=CommonDialog1.FontNameText1.FontBold=CommonDialog1.FontBoldText1.FontItalic=CommonDialog1.FontItalicText1.FontStrikethru=_CommonDialog1.FontStrikethruText1.FontUnderline=_CommonDialog1.FontUnderlineText1.ForeColor=CommonDialog1.ColorText1.FontSize=CommonDialog1.FontSizeEndSub62“字体”按钮Command2的Click事件过程如下:62运行时单击“背景色”按钮打开颜色对话框如下:运行时单击“字体”按钮打开字体对话框如下:63运行时单击“背景色”按钮打开颜色对话框如下:运行时单击“字体本章介绍了设计Windows应用程序界面的几种常见的要素,包括菜单、工具栏和对话框。应用程序界面对用户有着极大的影响,无论代码在技术上多么卓越,或者优化得多么好,如果用户发现应用程序很难使用,那么他们就很难接受它。一个设计得好的界面应具有以下特点:1)从外观上讲,界面应美观。2)控件布局合理。3)空白空间使用得当。4)保持界面的简明。5)对信息进行分组。6)尽量保持界面元素有一致性的风格。界面设计还要参考一些好的软件产品的界面风格,以及应用程序的使用范围和运行环境,满足使用者的要求应该作为界面设计的最终目标。64本章介绍了设计Windows应用程序界面的几种常见的本章小结1.菜单的设计下拉式菜单弹出式菜单2.工具栏的设计用手工方式制作工具栏使用ToolBar控件制作工具栏3.对话框的设计自定义对话框通用对话框65本章小结1.菜单的设计65界面设计本章要点:菜单的设计工具栏的设计状态栏的设计对话框的设计第10章66界面设计本章要点:第10章110.1菜单的设计Windows环境下几乎所有的应用软件都通过菜单实现各种操作。菜单将应用程序的各种操作分组显示在界面上,用户可以方便地从菜单中选择执行各种功能。

两种基本菜单类型:

下拉式菜单弹出式菜单6710.1菜单的设计Windows环境下几乎所有的10.1.1下拉式菜单子菜单菜单命令主菜单栏主菜单标题分隔条子菜单访问键顶级菜单快捷键

1.下拉式菜单的结构6810.1.1下拉式菜单子菜单命令主菜单栏主菜单标题分隔条2.菜单编辑器菜单项:看成控件,具有其属性、事件、方法。菜单项也称为菜单控件。菜单设计:通过“菜单编辑器”完成。首先使窗体成为当前窗体使用以下方法打开菜单编辑器:执行“工具”菜单下的“菜单编辑器”命令单击标准工具栏的“菜单编辑器”按钮从窗体快捷菜单中选择“菜单编辑器”命令菜单编辑器结构:属性区、编辑区、菜单列表区692.菜单编辑器4CaptionNameIndexShortcutCheckedEnabledVisibleWindowList(MDI)

NegotiatePositionHelpContextID

注:标题框中键入“-”和“&”符号的作用。不能给顶级菜单项加快捷键。

属性区菜单列表区编辑区70CaptionNameIndexShortcutCheck【例10-1】设计菜单界面,如下图所示。下拉菜单中的子菜单项用于对文本框Text1设置字体、字号、文字颜色和文字效果。其中,效果子菜单下的各菜单项具有复选功能,设运行初始时各项前面没有√符号,与文本框的初始状态一致。各子菜单结构见P194Text171【例10-1】设计菜单界面,如下图所示。下拉菜单中的子菜单项标题名称索引快捷键说明字体(&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菜单编辑器设置如下表:72标题名称索引快捷键说明字体(&F)AA访问键访问键Alt+C说明

DD4....斜体

DD3....粗体DD2....下划线

DD1....删除线

DD效果(&E)

CC3....蓝色

CC2....绿色

CC1....红色CC颜色(&C)快捷键索引名称标题(续表)访问键Alt+E73访问键Alt+C说明DD4....斜体D1)“字体”菜单下的菜单项设计成一个控件数组AA1,共享以下事件过程:PrivateSubAA1_Click(IndexAsInteger)Text1.Font=AA1(Index).CaptionEndSub2)“字号”菜单下的菜单项设计成一个控件数组BB1,共享以下事件过程:PrivateSubBB1_Click(IndexAsInteger)Text1.FontSize=Val(BB1(Index).Caption)EndSub741)“字体”菜单下的菜单项设计成一个控件数组AA1,共享以3)“颜色”菜单下的各菜单项为独立的菜单控件,因此应分别在其单击事件过程中编写代码,各事件过程如下:PrivateSubCC1_Click()Text1.ForeColor=vbRedEndSubPrivateSubCC2_Click()Text1.ForeColor=vbGreenEndSubPrivateSubCC3_Click()Text1.ForeColor=vbBlueEndSub753)“颜色”菜单下的各菜单项为独立的菜单控件,因此应分别在4)“效果”菜单下的各菜单项具有复选功能,每次单击时应切换成另一种状态,因此要判断当前菜单项的Checked属性,各事件过程如下:PrivateSubDD1_Click()IfDD1.Checked=TrueThenText1.FontStrikethru=FalseDD1.Checked=FalseElseText1.FontStrikethru=TrueDD1.Checked=TrueEndIfEndSub764)“效果”菜单下的各菜单项具有复选功能,每次单击时应切换PrivateSubDD2_Click()IfDD2.Checked=TrueThenText1.FontUnderline=FalseDD2.Checked=FalseElseText1.FontUnderline=TrueDD2.Checked=TrueEndIfEndSub77PrivateSubDD2_Click()12PrivateSubDD3_Click()IfDD3.Checked=TrueThenText1.FontBold=FalseDD3.Checked=FalseElseText1.FontBold=TrueDD3.Checked=TrueEndIfEndSub78PrivateSubDD3_Click()13PrivateSubDD4_Click()IfDD4.Checked=TrueThenText1.FontItalic=FalseDD4.Checked=FalseElseText1.FontItalic=TrueDD4.Checked=TrueEndIfEndSub79PrivateSubDD4_Click()14【例10-2】在窗体上设计菜单,菜单标题为“图像”,图像菜单下包括以下4个菜单项:1)载入:名称为LoadPic,用于向图片框中装入一幅图像,初始的Enabled属性为True。2)清除:名称为ClearPic,用于清除图片框中的图像,初始的Enabled属性为False。3)显示:名称为ShowPic,用于显示图片框中的图像,初始的Enabled属性为False。4)隐藏:名称为HidePic,用于隐藏图片框中的图像,初始的Enabled属性为False。80【例10-2】在窗体上设计菜单,菜单标题为“图像”,图像菜单运行时,界面的初始状态如图a,单击“载入”命令可以在打开的输入框中输入要载入的图像文件名,确定后将指定的图像显示在图片框Picture1中,这时的“图像”菜单变成图b的状态。这时如果选择“清除”命令,则清除图片框中的图片,菜单变成图a所示;如果选择“隐藏”命令,则隐藏图片框,菜单变成图c所示,而单击“显示”命令菜单又回到图b的状态。a)b)c)81运行时,界面的初始状态如图a,单击“载入”命令可以在打开的输各菜单项的Click事件过程如下:PrivateSubClearPic_Click()'清除Picture1.Picture=LoadPicture()ClearPic.Enabled=FalseLoadPic.Enabled=TrueHidePic.Enabled=FalseShowPic.Enabled=FalseEndSub82各菜单项的Click事件过程如下:17PrivateSubLoadpic_Click()'载入PicName=InputBox("请输入图像文件名")

OnErrorGoToErrHandlerPicture1.Picture=LoadPicture(PicName)ClearPic.Enabled=TrueLoadPic.Enabled=FalseHidePic.Enabled=TrueShowPic.Enabled=FalseExitSub'正常执行则到这里结束ErrHandler:'错误处理程序入口MsgBox"图像加载错误"EndSub83PrivateSubLoadpic_Click()PrivateSubHidePic_Click()'隐藏Picture1.Visible=FalseClearPic.Enabled=FalseLoadPic.Enabled=FalseHidePic.Enabled=FalseShowPic.Enabled=TrueEndSubPrivateSubShowPic_Click()'显示Picture1.Visible=TrueClearPic.Enabled=TrueLoadPic.Enabled=FalseHidePic.Enabled=TrueShowPic.Enabled=FalseEndSub84PrivateSubHidePic_Click()将本例对Enabled属性的设置改成对Visible属性的设置可以修改成将无效的菜单项隐藏起来,只显示可用的菜单项。用前面的方法建立的菜单,菜单项是固定的,菜单项不能自动增减。尽管可以通过设置菜单项的Visible属性使某些菜单项暂时隐藏起来,在必要的时候再将其显示出来,但也必须首先在菜单编辑器中设计所有的菜单项。在某些情况下,菜单项的个数在设计时是不可预测的,只能在程序运行时动态增减,用前面的方法就难以实现。要实现菜单项的动态增减,可以通过菜单数组来实现。通常,首先设计一个菜单项,定义该菜单项为菜单数组的第一项,即在菜单编辑器中,设置其“索引”属性值为0,“可见”属性为False(不可见)。在需要增加菜单项时,使用Load方法向该菜单数组增加新的菜单项,并对新增的菜单项设置标题(Caption)和可见(Visible)属性;在需要减少菜单项时,使用Unload方法从该菜单数组中删除一项。85将本例对Enabled属性的设置改成对Visible属性的设【例10-3】设计菜单,使得运行时初始界面如下图a所示。主菜单项“文件”下有两个固定的子菜单项“打开”和“关闭”及分隔线。要求:运行时单击“打开”菜单项在分隔线下面增加一个新的菜单项,单击“关闭”命令时删除分隔线下面一个指定的菜单项。单击新增的菜单项可以执行相应的应用程序。a)b)86【例10-3】设计菜单,使得运行时初始界面如下图a所示。主菜主要设计步骤:1)执行“工具”菜单中的“菜单编辑器”命令,打开菜单编辑器,按下表设计菜单。标题名称索引可见说明文件(&F)MainFileTrue定义访问键Alt+F....打开SubOpenTrue固定菜单项....关闭SubCloseTrue....-SptBarTrue分隔条....SubMenu0False定义成控件数组SubMenu87主要设计步骤:标题名称索引可见说明文件(&2)在窗体模块中定义模块级变量MenuNum,用于保存当前SubMenu菜单数组的最大下标:

DimMenuNumAsInteger3)编写“打开”菜单项的Click事件过程如下:

PrivateSubSubOpen_Click()

OpenFileName=InputBox("请输入文件名称")

IfTrim(OpenFileName)<>""Then

MenuNum=MenuNum+1

LoadSubMenu(MenuNum)

SubMenu(MenuNum).Caption=OpenFileName

SubMenu(MenuNum).Visible=True

EndIf

EndSub882)在窗体模块中定义模块级变量MenuNum,用于保存当前S4)编写“关闭”菜单项的Click事件过程如下:

PrivateSubSubClose_Click()

N=Val(InputBox("请指定关闭第几个文件"))

IfN>MenuNumOrN<1Then

MsgBox"超出范围!"

Else

ForI=NToMenuNum-1

SubMenu(I).Caption=SubMenu(I+1).Caption

NextI

UnloadSubMenu(MenuNum)

MenuNum=MenuNum-1

EndIf

EndSub894)编写“关闭”菜单项的Click事件过程如下:245)新增加的菜单项是一些应用程序的名字(包括路径)。要实现单击这些菜单项时能够执行相应的文件名指定的应用程序,需要在菜单数组的Click事件过程中应编写如下代码:PrivateSubSubMenu_Click(IndexAsInteger)

ShellSubMenu(Index).Caption,vbNormalFocusEndSub905)新增加的菜单项是一些应用程序的名字(包括路径)。要实现单10.1.2弹出式菜单弹出式菜单:上下文菜单、快捷菜单、右键菜单

为某对象设计弹出式菜单的步骤:1)在菜单编辑器中设计各菜单项,然后将顶级菜单设置为不可见。2)在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单:

[<窗体名>.]PopupMenu<菜单名>

,flags[,x[,y[,boldcommand]]]]功能:在当前鼠标位置或指定的坐标位置显示弹出式菜单。9110.1.2弹出式菜单弹出式菜单:上下文菜单、快捷菜单参数:<窗体名>:指菜单所在的位置,如果省略,则默认为是当前窗体。<菜单名>:指在菜单编辑器中设计的菜单项(至少有一个子菜单)的名称。Flags:可选项,可以是一个数值或常量,用于指定弹出式菜单的位置和行为,取值见P199表10-3和表10-4。如果要同时指定位置和行为时,则将两个参数值用Or连接,如:

4Or2x、y:指定显示弹出式菜单的x坐标和y坐标。省略时为鼠标坐标。boldcommand:指定弹出式菜单中要显示为黑体的菜单控件的名称。如果该省略参数,则弹出式菜单中没有以黑体字出现的菜单项。92参数:27【例10-4】在例10-1的基础上设计窗体和文本框的弹出式菜单。如下图所示。窗体的弹出式菜单文本框的弹出式菜单Text193【例10-4】在例10-1的基础上设计窗体和文本框的弹出式菜标题

名称

可见

文本框快捷菜单

EE

....增加1磅

EE1

....减少1磅

EE2....锁定EE3窗体快捷菜单FF

....红色背景FF1

....绿色背景FF2

....默认背景FF3

设计步骤:

1)在菜单编辑器上增加以下设置:94标题名称可见文本框快捷菜单EE....增加1磅2)在文本框的MouseDown事件过程中编写代码PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then

PopupMenuEE,0Or0EndIfEndSub参数Button:

1—按下鼠标的左按钮2—按下鼠标的右按钮4—按下鼠标的中间按钮左上角位于坐标处只接受左键单击952)在文本框的MouseDown事件过程中编写代码参数Bu3)在窗体的MouseDown事件过程中编写代码PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then

PopupMenuFF,8Or0,,,FF3

EndIfEndSub右上角位于坐标处FF3菜单项显示为粗体只接受左键单击x,y省略,但要保留逗号963)在窗体的MouseDown事件过程中编写代码右上角位于4)在窗体模块的通用声明段声明变量Fcolor,用于保存窗体的初始颜色:DimFcolorAsLong5)在窗体的Load事件过程中保存窗体的初始背景颜色:PrivateSubForm_Load()Fcolor=Form1.BackColorEndSub974)在窗体模块的通用声明段声明变量Fcolor,用于保存窗6)编写实现菜单命令功能的代码PrivateSubEE1_Click()Text1.FontSize=Text1.FontSize+1EndSubPrivateSubEE2_Click()Text1.FontSize=Text1.FontSize–1EndSubPrivateSubEE3_Click()IfEE3.Caption="锁定"ThenEE3.Caption="取消锁定"Text1.Locked=TrueElseEE3.Caption="锁定"

Text1.Locked=FalseEndIfEndSub986)编写实现菜单命令功能的代码33PrivateSubFF1_C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论