首页计算机计算机软件VB程序设计 10 第10章 界面设计.pptx

10 第10章 界面设计.pptx

页数:55页文件大小:773.4 KB来源: VB程序设计ppt课件

本课件讲解Windows应用程序界面设计,介绍菜单编辑器与下拉式、弹出式菜单的制作,说明用ToolBar与ImageList控件制作工具栏、StatusBar状态栏的方法,讲解自定义对话框、通用对话框与选项卡式对话框,最后给出多重窗体与多文档界面的设计步骤。

第10章 界面设计章节封面,标示本章主题与所讲授的主要内容
10.1 菜单的设计讲解页,围绕10.1 菜单的设计展开说明
10.1.1 下拉式菜单讲解页,围绕10.1 菜单的设计展开说明
查看本课件的文字版(共 55 页,供检索与复制)

第1页:第10章 界面设计

第10章 界面设计

  • 菜单的设计
  • 工具栏的设计
  • 状态栏的设计
  • 对话框的设计
  • 多文档界面的设计

第2页:10.1 菜单的设计

10.1 菜单的设计

  • 下拉式菜单
  • 弹出式菜单

第3页:10.1.1 下拉式菜单

10.1.1 下拉式菜单

10.1.1下拉式菜单1.下拉式菜单的结构子菜单菜单命令主菜单栏主菜单标题分隔条子菜单访问键顶级菜单快捷键

第4页:菜单编辑器与菜单项

菜单编辑器与菜单项

  • 首先使窗体成为当前窗体
  • 执行“工具”菜单下的“菜单编辑器”命令
  • 单击标准工具栏的“菜单编辑器”按钮
  • 从窗体快捷菜单中选择“菜单编辑器”命令菜单编辑器结构:属性区、编辑区、菜单列表区

第5页:菜单编辑器的属性区

菜单编辑器的属性区

CaptionNameIndexShortcutCheckedEnabledVisibleWindowList(MDI)NegotiatePositionHelpContextID注:标题框中键入“-”和“&”符号的作用。

不能给顶级菜单项加快捷键。属性区菜单列表区编辑区

第6页:【例10-1】设计菜单界面

【例10-1】设计菜单界面

,如下图所示。下拉菜单中的子菜单项用于对文本框Text1设置字体、字号、文字颜色和文字效果。其中,效果子菜单下的各菜单项具有复选功能,设运行初始时各项前面没有√符号,与文本框的初始状态一致。

各子菜单结构见P213Text1

第7页:【例10-1】菜单项属性说明

【例10-1】菜单项属性说明

说明快捷键索引名称标题访问键Alt+FAA字体(&F)定义成控件数组AA1;AA1(3)用于生成分隔条Ctrl+A1AA1....宋体Ctrl+B2AA1....黑体3AA1....-Ctrl+C4AA1....隶书Ctrl+D5AA1....楷体_GB2312访问键Alt+SBB字号(&S)定义成控件数组BB11BB1....142BB1....163BB1....184BB1....20菜单编辑器设置如下表:

第8页:【例10-1】菜单项属性说明(续)

【例10-1】菜单项属性说明(续)

访问键Alt+C说明DD4....斜体DD3....粗体DD2....下划线DD1....删除线DD效果(&E)CC3....蓝色CC2....绿色CC1....红色CC颜色(&C)快捷键索引名称标题(续表)访问键Alt+E

第9页:(1)“字体”菜单

(1)“字体”菜单

下的菜单项设计成一个控件数组AA1,共享以下事件过程:

Private SubAA1_Click(IndexAs Integer) Text1.Font = AA1(Index).Caption End Sub(2) “字号”菜单下的菜单项设计成一个控件数组BB1,共享以下事件过程: Private SubBB1_Click(IndexAs Integer) Text1.FontSize = Val(BB1(Index).Caption) End Sub

第10页:(3)“颜色”菜单

(3)“颜色”菜单

下的各菜单项为独立的菜单控件,因此应分别在其单击事件过程中编写代码,各事件过程如下:

Private SubCC1_Click() Text1.ForeColor = vbRed End Sub Private SubCC2_Click() Text1.ForeColor = vbGreen End Sub Private SubCC3_Click() Text1.ForeColor = vbBlue End Sub

第11页:(4) “效果”菜单

(4) “效果”菜单

下的各菜单项具有复选功能,每次单击时应切换成另一种状态,因此要判断当前菜单项的Checked属性,各事件过程如下:

Private SubDD1_Click() If DD1.Checked = True Then Text1.FontStrikethru = FalseDD1.Checked = False Else Text1.FontStrikethru = TrueDD1.Checked = True End If End Sub

第12页:【例10-1】字体菜单代码

【例10-1】字体菜单代码

Private SubDD2_Click() If DD2.Checked = True Then Text1.FontUnderline = FalseDD2.Checked = False Else Text1.FontUnderline = TrueDD2.Checked = True End If End Sub

第13页:【例10-1】效果菜单代码

【例10-1】效果菜单代码

Private SubDD3_Click() If DD3.Checked = True Then Text1.FontBold = FalseDD3.Checked = False Else Text1.FontBold = TrueDD3.Checked = True End If End Sub

第14页:【例10-1】效果菜单代码(续)

【例10-1】效果菜单代码(续)

Private SubDD4_Click() If DD4.Checked = True Then Text1.FontItalic = FalseDD4.Checked = False Else Text1.FontItalic = TrueDD4.Checked = True End If End Sub可以在应用程序运行期间动态修改菜单项,如修改菜单标题、隐藏某些菜单项、使某些菜单项无效等。【例10-2】见P215自学

第15页:10.1.2弹出式菜单

10.1.2弹出式菜单

  • (1)在菜单编辑器中设计各菜单项,然后将顶级菜单设置为不可见。
  • (2)在对象的MouseDown事件过程中编写代码,用以下的PopupMenu方法显示弹出式菜单:[<窗体名>.]PopupMenu<菜单名>,flags[,x[,y[,boldcommand]]]]功能:在当前鼠标位置或指定的坐标位置显示弹出式菜单。参数说明:见P217

第16页:【例10-3】设计弹出式菜单

【例10-3】设计弹出式菜单

【例10-3】在例10-1的基础上设计窗体和文本框的弹出式菜单。如下图所示。

第17页:【例10-3】菜单项设置

【例10-3】菜单项设置

可见名称标题EE文本框快捷菜单EE1....增加1磅EE2....减少1磅EE3....锁定FF窗体快捷菜单FF1....红色背景FF2....绿色背景FF3....默认背景(1)在菜单编辑器上增加以下设置:

第18页:【例10-3】窗体Load事件代码

【例10-3】窗体Load事件代码

'用Fcolor保存窗体初始背景颜色值DimFcolorAsLongPrivateSubForm_Load()Fcolor=Form1.BackColor

End Sub

第19页:(2)在文本框的MouseDown事件

(2)在文本框的MouseDown事件

过程中编写代码

Private Sub Text1_MouseDown(Button As Integer,Shift As Integer, X As Single, Y As Single) If Button = 2 ThenPopupMenu EE, 0 Or 0 End If End Sub参数Button:1—按下鼠标的左按钮2—按下鼠标的右按钮4—按下鼠标的中间按钮左上角位于坐标处只接受左键单击

第20页:(3)在窗体的MouseDown事件

(3)在窗体的MouseDown事件

过程中编写代码

Private Sub Form_MouseDown(Button As Integer,Shift As Integer, X As Single, Y As Single) If Button = 2 ThenPopupMenu FF,8 Or 0, , ,FF3 End If End Sub右上角位于坐标处FF3菜单项显示为粗体只接受左键单击x,y省略,但要保留逗号

第21页:【例10-3】菜单命令代码

【例10-3】菜单命令代码

(4)编写实现菜单命令功能的代码

Private SubEE1_Click() Text1.FontSize = Text1.FontSize + 1 End Sub Private SubEE2_Click() Text1.FontSize = Text1.FontSize–1 End Sub Private SubEE3_Click() If EE3.Caption = "锁定"ThenEE3.Caption = "取消锁定" Text1.Locked = True ElseEE3.Caption = "锁定" Text1.Locked = False End If End Sub

第22页:【例10-3】窗体快捷菜单代码

【例10-3】窗体快捷菜单代码

Private SubFF1_Click() Form1.BackColor = vbRed End Sub Private SubFF2_Click() Form1.BackColor = vbGreen End Sub Private SubFF3_Click() Form1.BackColor = Fcolor End Sub

第23页:10.2 创建工具栏

10.2 创建工具栏

10.2创建工具栏“Microsoft Windows Common Controls 6.0”将控件添加到工具箱,通过ToolBar、ImageList组合使用建立工具栏,步骤:1.在ImageList控件中添加所需的图像2.在ToolBar控件中创建Button对象。

3.在ButtonClick事件中用Select Case语句对各按钮进行相应的编程。10.2.1、在ImageList控件中添加图像ImageList控件不单独使用,专门为其它控件提供图像库.索引(Index)、关键字(Key)在ToolBar中引用图象文件的扩展名为:.ico、.bmp、.gif、.jpg等

第24页:在ToolBar控件中添加按钮

在ToolBar控件中添加按钮

10.2.2、在ToolBar控件中添加按钮1.为工具栏连接图像ToolBar与ImageList的连接工具栏样式

第25页:为工具栏连接图像与按钮

为工具栏连接图像与按钮

2.为工具栏增加按钮索引(Index)、关键字(Key)每个按钮的编号、标识,Button_Click事件中引用;图象(Image) ImageList对象中的图象,值可以是Key或Index样式(Style),共6种除菜单按钮(5)外的5种样式

第26页:响应ToolBar控件事件

响应ToolBar控件事件

  • (1)用索引Index确定按钮
  • (2)用关键字Key确定按钮
Private Sub Toolbar1_ButtonClick(Byval Button AsComctlLib.Button) Select Case Button.IndexCase1DD1_ClickCase2DD2_Click…… End Select End Sub注意:第1个按钮的Index值为1。用Index还是用Key比较,Key可读性好,可维护性好。 Select Case Button.KeyCase"Tstrike"DD2_ClickCase"Tunderline"DD2_Click.....

第27页:【例10-5】用工具栏控制图形移动

【例10-5】用工具栏控制图形移动

【例10-5】用Toolbar控件设计工具栏,界面如下图所示,运行时,当按下箭头按钮时,图形将沿着箭头指定的方向移动,当按下形状按钮组中的任何一个按钮时,图形将变成相应的形状。

按“Stop”按钮停止移动。Timer1Interval:100Enabled:FalseImageList1Shape1ToolBar1

第28页:【例10-5】按钮属性说明

【例10-5】按钮属性说明

说明图像工具文本提示样式关键字索引具有选项按钮的特点1圆2-tbrButtonGroupA112椭圆2-tbrButtonGroupA223圆角矩形2-tbrButtonGroupA334矩形2-tbrButtonGroupA44分隔条3-tbrSeperatorS15具有命令按钮的特点5上移0-tbrDefaultB166下移0-tbrDefaultB277左移0-tbrDefaultB388右移0-tbrDefaultB49分隔条3-tbrSeperatorS2109停止0-tbrDefaultC111设置ToolBar控件的属性页:

第29页:【例10-5】按钮属性说明(代码)

【例10-5】按钮属性说明(代码)

DimDirectionAsInteger'Direction做为移动方向的标志PrivateSubTimer1_Timer()'根据箭头按钮决定移动方向'设每次移动步长为50Twips,当移动到窗体边缘时不再移动。

SelectCaseDirectionCase1'如果选择向上移动IfShape1.Top-50>Toolbar1.Height_

Then Shape1.Top= Shape1.Top-50Case2'如果选择向下移动If Shape1.Top+ Shape1.Height+50< Form1.ScaleHeight_Then Shape1.Top= Shape1.Top+50Case3'如果选择向左移动If Shape1.Left-50>0Then Shape1.Left= Shape1.Left-50Case4'如果选择向右移动If Shape1.Left+ Shape1.Width+50< Form1.ScaleWidth_Then Shape1.Left= Shape1.Left+50EndSelectEndSub代码如下:

第30页:【例10-5】按钮属性说明(代码2)

【例10-5】按钮属性说明(代码2)

PrivateSubToolbar1_ButtonClick_(ByValButtonAsMSComctlLib.Button)'根据按下的形状按钮分情况进行处理SelectCaseButton.IndexCase1Shape1.Shape=3'设图形形状为圆形Case2Shape1.Shape=2'设图形形状为椭圆Case3Shape1.Shape=4'设图形形状为圆角矩形Case4Shape1.Shape=0'设图形形状为矩形

第31页:【例10-5】按钮属性说明(代码3)

【例10-5】按钮属性说明(代码3)

Case6Direction=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=FalseEndSelectEndSub

第32页:10.3 状态栏的设计

10.3 状态栏的设计

  • (1)向工具箱添加StatusBar控件工程→部件→“Microsoft Windows CommonControls 6.0”
  • (2)向窗体上添加StatusBar控件。
  • (3)设置StatusBar控件的“属性页”(P225~P2
  • 26),定义Panels对象集合(Panel:窗格)。在代码中访问索引为n的Panel对象:Panels(n )例:设置状态栏StatusBar1中索引值为2的窗格的显示文本为“锁定”:StatusBar1.Panels
  • (2).Text = “锁定”
  • (4)编写代码。

第33页:10.4 对话框的设计

10.4 对话框的设计

  • 对话框:特殊类型的窗体对象。
  • 作用:是用户和应用程序交互的主要途径。
  • 建立方法:
  • 使用预定义对话框,即输入框、消息框。
  • 定义对话框。
  • 使用CommonDialog控件创建通用对话框。

第34页:10.4.1自定义对话框

10.4.1自定义对话框

  • (1)添加窗体:工程添加窗体。
  • (2)将窗体定义成对话框风格。如:不能移动、改变尺寸、最大或最小化例:BorderStyle设置为1—单边框,不能改变大小ControlBox设置为False—删除控制菜单框MaxButton设置为False—删除最大化按钮MinButton设置为False—删除最小化按钮
  • (3)在对话框上添加按钮,如“确定”与“取消”按钮。
  • (4)在对话框上添加其它控件。
  • (5)在适当的位置编写显示对话框的代码。两种显示方式:模式对话框与无模式对话框。

第35页:模式与无模式对话框

模式与无模式对话框

显示模式对话框窗体名.Show vbModal窗体名.Show 1显示无模式对话框窗体名.Show vbModeless窗体名.Show 0窗体名.Show例如:Form2.ShowvbModalForm2.ShowvbModeless为确保对话框可以随其父窗体的最小化而最小化,随其父窗体的关闭而关闭,需要在Show方法中定义父窗体。

例如:

Private Sub Command1_Click()Form2. Show vbModeless, Form1 End Sub

第36页:编写对话框退出代码

编写对话框退出代码

(6)编写从对话框退出的代码例如:UnloadForm2或:Form2.HideUnload语句把对话框从内存中删除,该对话框本身以及它的控件都从内存中卸载。

而Hide方法只是通过设置对话框的Visible属性为False将其从视窗中删除。该对话框以及它的控件仍留在内存中。

第37页:【例10-7】运行指定文件的对话框

【例10-7】运行指定文件的对话框

【例10-7】设计对话框Form2如下图所示。当输入某文件所在的路径及名称后,单击“确定”按钮按所选择的运行方式运行该文件,单击“取消”按钮取消本次操作,返回窗体Form1中。

如果输入文件名错误,将给出警告并返回该对话框。Text1Option1Option2Option3Command1Command2设置对话框窗体的BorderStyle属性为1

第38页:【例10-7】对话框代码

【例10-7】对话框代码

对话框Form2代码如下:

Private Sub Command1_Click() On Error GoTo ErrorHandler'设置错误陷阱FName = Trim( Text1.Text) If Option1.Value = True Then a = Shell(FName, 1) If Option2.Value = True Then a = Shell(FName, 3) If Option3.Value = True Then a = Shell(FName, 2) Exit SubErrorHandler: MsgBox "不能运行该程序", , "注意"Resume Next'从产生错误的语句之后开始运行 End Sub Private Sub Command2_Click() Unload Me End Sub

第39页:10.4.2 通用对话框

10.4.2 通用对话框

10.4.2、通用对话框(CommonDialog)属性Action:打开通用对话框。DialogTiltle:对通用话框标题。

CancelErrorTrue:选择“取消”按钮,出现错误警告;Err.Number置为32755(cdCancel)。

False(缺省):选择“取消”按钮,没有错误警告。工程/部件选定部件标签选定Microsoft CommonDialog Control 6.0通用对话框添加到工具箱确定打开通用对话框:

第40页:通用对话框的文件属性

通用对话框的文件属性

属性FileName:设置和得到用户所选的文件名,包括路径.FileTitle:用于返回文件名,不包含路径。该属性设计时无效,在程序中只读。

Filter:用来过滤文件类型,使文件列表框中只显示指定类型的文件。该属性在计阶段和代码中都可以设置。格式:文件说明|文件类型,,word文档|*.DOC|文本文件|*.txt|All Files|*.*FilterIndex:决定在文件类型列表框中显示第几组类型的文件。

InitDir:初始化路径,若显示当前目录,该属性不需要设置。DefaultExt:它表示所存文件的默认扩展名,该属性只实用于另存为对话框。

1.“打开/另存为”文件对话框DialogTiltleFileNameInitDirFilterFilterIndexDefaultExt

第41页:简单文件打开程序示例

简单文件打开程序示例

例:简单文件打开程序,当按“用于文件打开”按钮,启动“打开对话框“,打开文件后文本标签框标题显示路径,在“打开对话框”按“取消”按钮,显示有关信息。

Private Sub Command1_Click() On Error GoTo nofile CommonDialog1.InitDir = " C:\Windows " CommonDialog1.CancelError = True CommonDialog1.Filter = "文本文件(.txt) |*.txt|all files(*.*)|*.*" CommonDialog1. ShowOpen Label1.Caption = CommonDialog1.FileName Exit Subnofile: If Err.Number = 32755 Then Label1.Caption = "放弃操作" Else Label1.Caption = "其他错误!" End If End Sub

第42页:“颜色”对话框

“颜色”对话框

3.“颜色”对话框属性颜色(Color):返回或设置选定的颜色,表示颜色的整数。标志(flag):设置或读取颜色属性,设置如下:描述十六制值VB常数显示全部对话框,包括定义“自定义颜色部分”&H2CdCCIFullOpen使用对话框显示帮助按钮&H8CdICCShowHelpButton使定义“自定义颜色”命令按钮无效并防止自定义颜色&H4CdICCPrevntFullOpen为对话框设置初始颜色值&H1CdICCRGBInit例10.9

第43页:4.“字体”对话框

4.“字体”对话框

Flags属性:指示所显示的字体类型,必须设置。cdlCFScreenFonts&H1屏幕字体cdlCFPrinterFonts&H2打印机字体cdlCFBoth&H3打印机字体和屏幕字体。

cdlCFEffects&H100显示删除线和下划线检查框以及颜色组合框FontNameFontBold、FontItalicFontSizeFontStrikethruFontUnderlineColorMin、Max

第44页:5.“打印”对话框

5.“打印”对话框

属性FromPage:起始页号ToPage:终止页号Copies:打印份数如果打印驱动程序不支持多份打印,该属性有可能始终返回1。

第45页:10.4.3选项卡式对话框

10.4.3选项卡式对话框

  • (1)向工具箱添加SSTab控件。工程→部件→“Microsoft Tabbed DialogControl 6.0””
  • (2)向窗体上添加SSTab控件。
  • (3)设置SSTab控件的属性(见P234~2
  • 35)。
  • (4)在SSTab控件的各选项卡上添加控件。
  • (5)编写各选项卡中控件的事件过程代码及SSTab控件的事件过程代码。

第46页:10.5 多重窗体与多文档窗体

10.5 多重窗体与多文档窗体

10.5多重窗体和多文档窗体10.5.1、多重窗体1.添加窗体“工程|添加窗体”新建现存添加“现存”窗体时要注意:防止多个窗体的name相同而不能添加;添加的窗体实际是将其它工程中已有的窗体加入,多个工程共享窗体;通过“另存为”命令以不同的窗体文件名保存,断开共享。

2.保存窗体一个工程中有多个窗体,应分别取不同的文件名保存在磁盘上,VBP工程文件中记录了该工程的所有窗体文件名。

第47页:设置启动窗体

设置启动窗体

  • (1)Load语句:装入窗体到内存但没有显示窗体形式:Load窗体名称
  • (2)Unload语句:从内存删除窗体形式:Unload窗体名称“工程/属性”“启动对象”

第48页:窗体的语句与方法

窗体的语句与方法

  • (1)Show方法:显示一个窗体[窗体名称].Show [模式]0-Modal:关闭才能对其它窗体进行操作。1-Modeless,可以对其它窗体进行操作。
  • (2) Hide方法:隐藏窗体,没有Unload删除[窗体名称.] Hide6.不同窗体间数据的存取
  • (1)存取控件的属性另一窗体名.控件名.属性
  • (2)存取变量的值另一窗体名.全局变量名

第49页:例:输入和计算学习成绩

例:输入和计算学习成绩

例.输入和计算学习成绩。模块:Public MATH As SinglePublic PHYSICS As SinglePublic CHEMISTRY As SinglePublic CHINESE As SinglePublic ENGLISH As Single

第50页:10.5.2 多文档界面设计

10.5.2 多文档界面设计

  • (1)子窗体随父窗体最小化或关闭而最小化或关闭。
  • (2)子窗体不能移出父窗体。
  • (3)当子窗体最大化时,标题与父窗体的标题重叠。
  • (4)父窗体和子窗体可以有各自的菜单,加载子窗体后,父窗体的菜单将被子窗体的菜单取代。

第51页:创建多文档界面的步骤

创建多文档界面的步骤

  • (1)添加一个MDI父窗体。工程→添加MDI窗体→选择“MDI窗体”
  • (2)建立其它子窗体。建立普通窗体,设置其MDIChild属性为True
  • (3)设置启动对象为MDIForm对象。工程→工程属性→选择“启动对象”为MDIForm
  • (4)要在MDIForm中显示各子窗体,可用Show方法。使用Arrange方法可以重排MDI子窗体或图标。格式:<MDIForm对象名>.Arrange <排列方式><排列方式>:vbCascade或0—层叠非最小化的子窗体vbTileHorizontal或1—水平平铺非最小化子窗体vbTileVertical或2—垂直平铺非最小化子窗体vbArrangeIcons或3—重排最小化子窗体的图标

第52页:【例10-6】MDI多文档界面示例

【例10-6】MDI多文档界面示例

【例10-6】设计一个包含一个MDI父窗体MDIForm1和三个子窗体Form1、Form2和Form3的工程,将Form1、Form2和Form3的MDIChild属性分别设置为True。

在MDI窗体上设计菜单,主菜单及子菜单如图所示。

第53页:MDIForm1的菜单编辑器设置

MDIForm1的菜单编辑器设置

下表:标题名称索引显示窗口列表打开Mopen....窗口1SWindow1....窗口2SWindow2....窗口3SWindow3窗口MWindows√....层叠SArrange0....水平平铺SArrange1....垂直平铺SArrange2....排列图标SArrange3

第54页:【例10-6】窗口排列代码

【例10-6】窗口排列代码

程序:

Private Sub Sarrange_Click(Index As Integer)MDI Form1.Arrange Index End Sub Private Sub Swindow1_Click() Form1. Show End Sub Private Sub Swindow2_Click()Form2. Show End Sub Private Sub Swindow3_Click()Form3. Show End Sub

第55页:本章小结

本章小结

  • 下拉式菜单
  • 弹出式菜单2.工具栏的设计
  • 用手工方式制作工具栏
  • 使用ToolBar控件制作工具栏3.状态栏的设计4.对话框的设计
  • 自定义对话框
  • 通用对话框
  • 选项卡式对话框5.多重窗体和多文档界面设计
顶部目录