界面设计和应用程序_第1页
界面设计和应用程序_第2页
界面设计和应用程序_第3页
界面设计和应用程序_第4页
界面设计和应用程序_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、界面设计和应用程序 本章主要内容 $8.1 通用对话框 $8.2 菜单设计 $8.3 多重窗体和多文档界面 $8.4 工具栏和状态栏 $8.5 RichTextBox控件 $8.6 应用程序向导第8章 界面设计 $8.1 对话框 对话框(DialogBox)是应用程序与用户进行交互的主要途径。三种对话框: (1)预定义对话框(使用函数InputBox和MsgBox来实现) (2)通用对话框 (3)用户自定义对话框一、 通用对话框 通用对话框是一种ActiveX控件,利用它能够很容易地创建下列六种标准对话框:打开(Open),另存为(Save As),颜色(Color),字体(Font),打印机

2、(Printer)和帮助(Help)对话框 1添加通用对话框控件 在使用之前,应选择“工程”菜单中的“部件”命令先将其添加到工具箱中 当程序运行时,通用对话框是不可见的 通用对话框不仅本身具有一组属性,而且由它产生的各种标准对话框也拥有许多特定属性。 属性设置可以在属性窗口或程序代码中进行,也可以通过“属性页”对话框来设置 2属性页 3通用对话框的基本属性和方法 (1)Name属性 (2)Action属性:该属性直接决定打开哪种对话框 对话框类型 Action属性值 方法 无对话框 0 打开”对话框 1 ShowOpen “另存为”对话框 2 ShowSave “颜色”对话框 3 ShowCo

3、lor “字体”对话框 4 ShowFont “打印”对话框 5 ShowPrinter “帮助”对话框 6 ShowHelp 例如,利用通用对话框CommonDialog1产生一个“打开”对话框,可以执行下列语句: CommonDialog1.Action=1 或 (3)DialogTitle属性:该属性用于设置对话框的标题 (4)CancelError属性:该属性表示用户在使用对话框进行对话时,单击“取消”按钮是否产生错误信息 (5)通用对话框的方法二、 “文件”对话框 在程序中将通用对话框的Action属性设置为1,或用ShowOpen方法打开,则弹出“打开文件”对话框 “打开”对话框的

4、属性: 、Filter、FilterIndex、IniDir 1.文件对话框(打开、保存)需设置的属性FilterInitDirFilterIndex属性:包含路径;:不包含路径。Filter:例如, Documents(*.DOC)|*.DOC|Text Files(*.TXT)|*.txt|All Files|*.*FilterIndex:决定在文件类型列表框中显示第几组类型的文件。InitDir:初始化路径。“打开”文件对话框属性页DialogTiltle InitDirFilterFilterIndexDefaultExt 例 建立一个“打开文件”的对话框 在窗体上添加一个通用对话框和

5、一个“打开”命令按钮,当单击“打开”按钮时,就会弹出一个“打开文件”的对话框 (1) 把CommonDialog控件添加到工具箱中。然后在窗体上添加CommonDialog控件,其默认名称为CommonDialog1 (2)在窗体上添加一个命令按钮Command1,其Caption属性为“打开” (3)“打开”命令按钮Command1的Click事件过程代码: Private Sub Command1_Click() CommonDialog1.DialogTitle = 打开文件“ 设置文件过滤器 CommonDialog1.Filter = 全部文件|*.*|文本文件|*.txt Comm

6、onDialog1.InitDir = C:my documents 设置默认文件夹 CommonDialog1.ShowOpen 显示“打开”对话框 End Sub 其中,设置文件过滤器(Filter)属性的参数格式如下: 描述符1 过滤符1 描述符2 过滤符2 程序运行后,单击“打开”按钮即弹出如图所示的对话框 从控件的属性中获取选定的路径及文件名 三、“颜色”对话框 属性Color:返回或设置选定的颜色。 例 “颜色”对话框的使用。 四、 “字体”对话框 “另存为”对话框:没有提供真正的存储文件操作,仍需要编程完成储存操作。属性 DefaultExt:缺省扩展名。“字体”对话框Flags

7、属性:指示所显示的字体类型,必须设置。 cdlCFScreenFonts&H1屏幕字体 cdlCFPrinterFonts&H2打印机字体 cdlCFBoth&H3打印机字体和屏幕字体。 cdlCFEffects&H100显示删除线和下划线检查框以及颜色组合框 FontName FontBold、FontItalicFontSizeFontStrikethruFontUnderline ColorMin、Max 例8.3 字体对话框的使用。五、 “打印”对话框属性FromPage:起始页号;ToPage:终止页号;Copies:打印份数。如果打印驱动程序不支持多份打印,该属性有可能始终返回 1

8、。 例 打印对话框的使用。六、 “帮助”对话框帮助文件需要用其他的工具制作,如Microsoft Windows Help Compiler。 例 属性 HelpCommand:在线Help帮助类型; HelpFile:Help文件的路径及其名称; HelpKey:在帮助窗口显示由该帮助关键字指定的帮助信息自定义对话框 创建自定义对话框就是建立一个窗体,在窗体上根据需要放置控件,通过设置控件属性值来定义窗体的外观 因为对话框没有控制菜单框(标题栏左侧)和最大化、最小化按钮,不能改变其大小,所以应设置以下对话框的属性,见表 用窗体自定义对话框,一般步骤: (1)向工程添加窗体 (2)在窗体上创建

9、其他控件对象,定义对话框的外观 (3)设置窗体和控体对象的属性 (4)在代码窗口中创建事件过 $8.2 菜单设计 应用程序通过菜单为用户提供一组命令 菜单一般分为两种:即下拉式菜单和弹出式菜单一、 下拉式菜单 1.下拉式菜单的结构 下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单主菜单名快捷键热键下级子菜单标记分隔线菜单项子菜单名主菜单条菜单编辑器 设计菜单的工具 启动菜单编辑器的方法 菜单编辑器分为上、下两部分,上半部分用来设置属性,下半部分是菜单显示区,用来显示用户输入的菜单内容。 “标题”(Caption)输入框 供输入标题,也会同时显示在菜单显示区。菜单项的访问键,用“(&字符)”格式

10、 “名称”(Name)输入框 “索引”(Index)输入框 “快捷键”列表框 “帮助上下文ID”输入框 “协调位置”列表框 “复选”框 “有效”框 “可见”框 “显示窗口列表”框 菜单显示区。内缩符号(4个点“”) 编辑按钮 共有7个按钮 分隔线 菜单的Click事件 除分隔线以外的所有菜单元素都能识别Click事件。例 编一程序,进行两个操作数的算术运算练习 设计步骤如下: (1)创建应用程序的用户界面和设置对象属性 菜单栏向用户提供功能选择,包括运算数的位数,运算符类型和退出程序 菜单设计 各个菜单项名称 例运行时改变菜单属性 1. 使菜单命令有效或无效 所有的菜单项都具有Enabled属

11、性,当该属性为True(默认值)时,有效;若为False时,菜单项会变暗,菜单命令无效。 举例: Mnu30.Enabled = False 2. 显示菜单项的复选标记 使用菜单项的Checked属性,可以设置复选标记。 举例:Mnu31.Checked=True 3. 使菜单项不可见 举例:Mnu30.Visible=True 在程序运行时,菜单随时增减,如“文件”菜单能保留最近打开的文件数。这同控件数组一样,使用菜单数组。步骤: 1.在菜单设计时,加入一个菜单项,其Index为0(菜单数组), Visual为False。 2.在程序运行时,通过Load方法向菜单数组增加新的菜单项。 例8.

12、7 在中的运算用动态菜单实现 同样,要删除所建立的菜单项,使用UnLoad方法向菜单数组减少菜单项。二、动态菜单(菜单项增减)三、 弹出式菜单 弹出式菜单又称为快捷菜单。单击鼠标右键。可以根据右击鼠标时的位置弹出不同的菜单。 使用VB提供的菜单编辑器,把某个菜单设置成隐藏。 创建快捷菜单的步骤如下: (1)使用菜单编辑器设计菜单 (2)设置顶层菜单项为不可见,即不选中菜单编辑器里的“可见”选项或在属性窗口中设定Visible属性为False (3)编写与弹出式菜单相关联的MouseUp(释放鼠标)事件过程。格式为: 对象 PopupMenu 菜单名 , 位置常数, 横坐标, 纵坐标常数位置值描

13、述vbPopupMenuLeftAlign0(缺省值)。弹出式菜单的左边定位于 x。vbPopupMenuCenterAlign4弹出式菜单的于 x 居中位。vbPopupMenuRightAlign8弹出式菜单的右边定位于 x。常数行为值描述vbPopupMenuLeftButton0(缺省值)。 仅当使用鼠标左按钮时, 弹出式菜单中的项目才响应鼠标单击。vbPopupMenuRightButton2不论使用鼠标右按钮还是左按钮, 弹出式菜单中的项目都响应鼠标单击。flags:如下表: 例8.8 在例的基础上,把“位数”菜单改为快捷菜单 (1)打开例的应用程序,选定窗体,然后在菜单编辑器中将

14、“位数”菜单标题的“可见”框中的“”取消(即不选中) (2)增加以下的MouseUp事件过程代码: Private Sub Form_MouseUp(Button As Integer, _Shift As Integer, X As Single, Y As Single)If Button = 2 Then 检查是否右击,击左键为1PopupMenu mnu10End If End Sub程序运行时,右击窗体空白处,即会弹出快捷菜单,如图所示例一、多窗体处理 在多窗体程序中,每个窗体可以有自己的界面和程序代码,完成不同的操作 1. 添加窗体 通过“工程”菜单中的“添加窗体”命令来实现 2.

15、 删除窗体 选择“工程”菜单中的“移除”命令 3. 保存窗体 选择“文件”菜单中的“保存”或“另存为”命令 4. 设置启动窗体 在“工程属性”对话框中设置 $8.3 多重窗体和多文档界面 Load语句:把一个窗体装入内存 UnLoad语句:清除内存中指定的窗体 Show方法:显示一个窗体 Hide方法:隐藏窗体。即不在屏幕上显示,但仍在内存 中,因此它与UnLoad的作用是不一样的 有关语句和方法 创建3个窗体和1个标准模块 (1)主窗体(Form1) 本窗体上建立了“输入参数”(Command11) 、“画圆”(Command12)和“结束”(Command13)三个命令按钮 设置为启动窗体

16、例8.10 多窗体应用示例Private Sub Command11_Click() 主窗体“输入参数”按钮 Form1.Hide 隐藏主窗体 Form2.Show 显示“输入参数”窗体End SubPrivate Sub Command12_Click() 主窗体“画圆”按钮 Form1.Hide 隐藏主窗体 Form3.Show 显示“画圆”窗体End SubPrivate Sub Command13_Click() 主窗体“结束”按钮 Unload Form1 Unload Form2 Unload Form3 EndEnd Sub先卸载所有已打开的窗体 (2)“输入参数”窗体(Form

17、2) 这是在主窗体上单击了“输入参数”按钮后弹出的窗体,用于输入圆的坐标位置(x,y)和半径(r)。窗体上建立了3个文本框(Text21、Text22和Text23)和1个“返回”命令按钮(Command21) Private Sub Command21_Click() “输入参数”窗体的“返回”按钮 X = Val(Text21.Text) Y = Val(Text22.Text) R = Val(Text23.Text) Form2.Hide 隐藏“输入参数”窗体 Form1.Show 显示主窗体 End Sub (3)“画圆”窗体(Form3) 这是在主窗体上单击了“画圆”按钮后弹出的窗

18、体。窗体上建立了1个图片框和2个命令按钮,如图所示。用户可以单击“画圆”(Command31)命令按钮,使之按给定参数在图片框上画圆。Private Sub Command31_Click() “画圆”窗体的“画圆”按钮 Picture1.Circle (X, Y), R 在图片框上画圆,圆心(X,Y), 半径REnd SubPrivate Sub Command32_Click() “画圆”窗体的“返回”按钮 Form3.Hide 隐藏“画圆”窗体 Form1.Show 显示主窗体End Sub (4)标准模块(Modulel) 由于在各窗体之间需要使用公共变量来传送数据,所以建立一个标准模

19、块Modulel,对用到的全局变量X、Y和R进行声明 运行程序后,首先显示主窗体。在主窗体上,用户可通过“输入参数”和“画圆”两个按钮来选择进入不同的窗体,例如单击“输入参数”按钮,则主窗体消失,显示“输入参数”窗体。在“输入参数”窗体或“画圆”窗体上,单击“返回”按钮,又可以隐藏当前窗体和重现主窗体例输入和计算学习成绩。模块:Public MATH As SinglePublic PHYSICS As SinglePublic CHEMISTRY As SinglePublic CHINESE As SinglePublic ENGLISH As Single 程序一般从启动窗体的Form_

20、Load过程开始执行 有时在程序启动时不加载任何窗体,而是首先执行一段程序代码,此时可把要执行的程序代码放在Sub Main过程中,并指定Sub Main为“启动对象”。应用程序在运行时会先执行Sub Main过程 在一个工程中只能有一个Sub Main过程,必须放在标准模块中,不能放在窗体模块内。 设置Sub Main过程为“启动对象”的方法:在“工程属性”对话框的“通用”选项卡中,从“启动对象”下拉列表框中选中“Sub Main”Sub Main过程 建立两个窗体(Form1及Form2)和1个标准模块(Module1)。标准模块包含一个Sub Main过程。如图所示 两个窗体分别显示当前

21、日期和时间 运行程序时首先判断当前时间是否超过12时,若超过,则显示窗体Form2;否则显示窗体Form1 例 使用Sub Main过程示例 (3)窗体Form2 本窗体显示当前时间,其Form_Load事件过程代码如下: Private Sub Form_Load() Show Print 这里是窗体Form2 Print 现在时间: ; Time End Sub 程序运行时,先执行Sub Main过程,即取出当前时数t,再根据条件“t=12”来决定是显示Form1,还是显示Form2 不需要加载任何窗体(这种情况极少)时,可把执行的代码直接写入Sub Main过程中 单文档界面(SDI):

22、一次只能同时打开一个文档,例如“记事本”(WORDPAD); 多文档界面(MDI):可以同时打开多个文档,例如Word,Excel;在多文档界面中,窗体分为:MDI父窗体和子窗体; 多文档界面运行时的特征:(1) 所有子窗体均显示在MDI窗体的工作空间内;(2) 最小化一个子窗体时,它的图标显示于MDI窗体上,而不是任务栏中;(3) 最大化一个子窗体时,它的标题与MDI窗体的标题重合;(4)活动子窗体的菜单将显示在MDI窗体的菜单栏中,而不是子窗体中;(5)加载子窗体时会自动加载其父窗体,反之则不然; MDI父窗体和子窗体各有自己的工具栏,但是子窗体的菜单则显示在父窗体上; 二、 多文档界面(

23、MDI) 例1. 创建和设计MDI窗体及其子窗体 (1) 创建和设计MDI窗体 创建: “工程/添加MDI窗体”命令设计:一般有菜单栏、工具栏、状态栏(2) 创建和设计MDI子窗体 创建: MDI子窗体是一个MDIChild属性为True的普通窗体。 要创建多个子窗体,通过窗体类来实现: Public Sub () Dim NewDoc As New frmMDIChild No = No + 1 NewDoc.Caption = no & No NewDoc.Show End Sub 设计:可有菜单栏,但必须有文本框。 MDI子窗体的Name2. MDI窗体与子窗体的交互(1)活动子窗体和活

24、动控件MDI窗体的两个属性:ActiveForm 和ActiveContro。l例:将子窗体的文本框中所选文本复制到剪贴板上。 (2)显示MDI窗体及其子窗体显示任何窗体的方法为show,还有有关规则:加载子窗体时,其父窗体会自动加载并显示;反之则无。MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。(3)维护子窗体的状态信息(4)用QueryUnload卸载MDI窗体 3. 多文档界面应用程序中的“窗口”菜单 (1)显示打开的多个文档窗口 要在某个菜单上显示所有打开的子窗体标题,只需利用菜单编辑器将该菜单的WindowList属性设置为True。 (2)排列窗口 利用

25、Arrange方法进行层叠、平铺和排列图标。 形式: MDI窗体对象.Arrange 的排列方式: $8.4 工具栏和状态栏 分别通过Active X控件ToolBar和StatusBar来实现 工具栏(ToolBar) 工具栏为用户带来比用菜单更为快速的操作 为窗体添加工具栏,应使用工具条(ToolBar)控件和图像控件列表(ImageList)控件(不是标准控件) 创建工具栏的大致步骤: (1)添加ToolBar控件和ImageList控件 (2)用ImageList控件保存要使用的图形 (3)创建ToolBar控件,并将ToolBar控件与ImageList控件相关联,创建Button对

26、象 (4)编写Button的Click事件过程。 单击工具栏控件时触发Click事件,单击工具栏上按钮时触发ButtonClick事件,并返回一个Button参数(表明按下哪个按钮)一、在ImageList控件中添加图像 ImageList控件不单独使用,专门为其他控件提供图像库。索引(Index)、关键字(Key)在ToolBar中引用图像文件的扩展名为: .ico、.bmp、.gif、.jpg等。二、在ToolBar控件中添加按钮 1.为工具栏连接图像 ToolBar与ImageList的连接工具栏样式 2.为工具栏增加按钮索引(Index)、关键字(Key)每个按钮的编号、标识,Butt

27、onClick事件中引用;图像(Image) ImageList对象中的图像,值可以是Key或Index样式(Style),共6种除菜单按钮(5)外的5种样式0:thrdefault 普通按纽 按纽按下后恢复原态1:thrcheck 开关按纽 按下后保持按下状态 “加粗”2:thrbuttongroup 编组按纽 一组一次只能一个有效3:thrsepatator 分隔按纽 分隔按纽4:thrplacedholder 占位按纽 以便方其他按纽5:thrdropdowm 菜单按纽 具有下拉菜单,“字符缩放”三、 响应ToolBar控件事件 ToolBar控件常用的事件有两个:ButtonClick

28、和ButtonMenuClick。前者对按钮样式为02,后者对样式为5的菜单按钮。 (1)用索引Index确定按钮 (2)用关键字Key确定按钮Private Sub Toolbar1_ButtonClick(Byval Button As ComctlLib.Button) Case 1 Case 2 End SelectEnd Sub注意:第1个按钮的Index值为1。用Index还是用Key比较,Key 可读性好,可维护性好。 Case TNew Case TOpen 例8.14 使用工具栏 在例的基础上,增加一个工具栏,使之能快速提供“加法”、“减法”和“乘法”运算类型 操作步骤: (

29、1)打开例的应用程序 (2)按照上述创建ImageList的方法,在窗体上建立ImageList1控件,并从Windows 98系统文件夹中取出图片文件、和Hlpglobe.gif(本例采用这三个图片作为按钮的图形),并添加到该控件中。 (3) 在窗体上建立ToolBar1控件,使之与ImageList1相关联,然后在控件中添加“加法”、“减法”和“乘法”三个按钮,并分别取用ImageList1中的三个图片。 (4)在原有程序代码的基础上,增加以下的ButtonClick事件过程代码Private Sub Toolbar1_ButtonClick(ByVal Button As _ MSCom

30、ctlLib.Button) Case 1: ws = 1 Case 2: ws = 10 Case 3: ws = 100 Case 4: op = + Case 5: op = - Case 6: op = * Case 7: op = / End Select End SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As _ MSComctlLib.Button) Case yiweshu: ws = 1 Case liangweishu: ws = 10 Case sanwe3: ws = 100 Case 4: op = + Case

31、 5: op = - Case 6: op = * Case 7: op = / End Select End Sub 状态栏 状态栏(StatusBar)通常位于窗体的底部,主要用于显示应用程序的各种状态信息。StatusBar控件属于ActiveX控件 StatusBar控件由若干个面板(Panel)组成,每一个面板包含文本和图片。StatusBar控件最多能分成16个Panel对象 状态栏显示系统信息和对用户的提示,如:系统日期、软件版本、光标的当前位置、键盘的状态等。一般在窗口的底部。1建立状态栏可插入图像显示的文本样式 例 使用状态栏 在例的基础上,在窗体底部添加一个状态栏,用于显示当前时间、键盘大小写状态及运行状态。操作步骤: (1)打开例的应用程序 (2)在窗体上创建StatusBar1控件 (3)右击StatusBar1控件,从快捷菜单中选择“属性”命令,系统弹出“属性页”对话框 (4)单击

温馨提示

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

评论

0/150

提交评论