单元九 菜单和工具栏设计 单元九 菜单和工具栏设计菜 单 设 计 1工 具 栏 设 计 2滚动条控件 ScrollBar39.1 菜 单设计9.1.1 菜单的两种基本类型1. 下拉式菜单 下拉式菜单是一种典型的窗口式菜单,一般通过单击窗口菜单栏中的菜单标题的方式 打开。2. 弹出式菜单 弹出式菜单(也称右键菜单、快捷菜单),是当用户在一个对象上单击右键时显示出来的菜单,可以在窗口的某个位 置显示,因此,用户可以利用弹出式菜单更方便快捷地操作。 9.1.2 下拉式菜单的程序设计 利用菜单编辑器可 以在窗体中建立下拉式菜单,设计步骤为: (1) 新建一个窗体,并设计用户界面。 (2) 利用菜单编辑器设计各菜单项。 (3) 利用代码编辑窗口编写每一菜单项的事件过程。 (4) 运行调试各菜单命令。1. 建立简单的下拉式菜单在窗体上建立 下拉式菜单。 (1) 在VB中,菜单是一个控件。 (2) 菜单控件不在VB的工具箱中,需要在VB的“菜单编辑器”中 进行菜单的设计。 (3) 进入菜单编辑器可以通过下面4种方法:单击“工具”菜单→“菜单编辑器”命令。单击工具栏中的“菜单编辑器”按 钮。在窗体上单击右键,在快捷菜单中选择“菜单编辑器”。按下快捷键Ctrl+E。2. 常用的下拉式菜单程序设计利用下拉式菜单为标签中 的文本内容设置不同的字体和风格。 建立用户界面及设置对象属性。 Private Sub song_Click() Label1. FontName = "宋体"End SubPrivate Sub li_Click() Label1.FontName = " 隶书"End SubPrivate Sub kai_Click() Label1.FontName = "楷体_GB2312"E nd SubPrivate Sub hei_Click() Label1.FontName = "黑体"End SubPriva te Sub bld_Click() bld.Checked = Not bld.Checked Label1.FontBol d = bld.CheckedEnd SubPrivate Sub Itl_Click() Itl.Checked = Not Itl.Checked Label1.FontItalic = Itl.CheckedEnd SubPrivate Sub Un drln_Click() Undrln.Checked = Not Undrln.Checked Label1.FontUnd erline = Undrln.CheckedEnd Sub3. 动态菜单的程序设计设计菜单程序。 建立用户界面。Priva te Sub Main_Click() If Text1.Text = “” Then Size(1).Enabl ed = False Size(2).Enabled = False Size(3).Enabled = F alse Else Size(1).Enabled = True Size(2).Enabled = True Size(3).Enabled = True End IfEnd SubPrivate Sub Size_Click(Inde x As Integer) Select Case Index Case 1 Size(3).Checke d = False Size(2).Checked = False Size(1).Checked = True Text1.FontSize = 10 Case 2 Size(1).Visible = True Size(1).Checked = False Size(3).Checked = False Size(2). Checked = True Text1.FontSize = 12 If a = 1 Then Unloa d Size(4) a = 0 End If Case 3 Size(2).Check ed = False Size(1).Checked = False Size(3).Checked = True Text1.FontSize = 14 Size(1).Visible = False If a = 0 Then Load Size(4) a = 1 Size(4).Visible = True Size(4).Caption = "16" Else Size(4).Checked = False End If Case 4 Size(2).Checked = False Size(3). Checked = False Size(4).Checked = True Text1.FontSize = 16 End SelectEnd Sub9.1.3 弹出式菜单的程序设计 设计弹出式菜单的步骤可以分为两步: (1) 使用菜单 编辑器建立菜单,此步骤与前面介绍的建立下拉菜单的方法一样,只是必须把主菜单的“可见”栏Visible属性设置为False,其子菜单 项的Visible属性不要设置为False。 (2) 利用窗体的PopupMenu方法显示弹出式菜单。[〈窗体名〉.] P opupMenu〈菜单名〉[, Flags [,x [, y [, Boldcommand ]]]]为文本框增加一个弹出式菜单,该 菜单中包含3个选项,分别是“红色”、“蓝色”和“绿色”,单击相应的选项后可以改变文本框中文字的颜色。 (1) 建立用户界面。 添加一个文本框控件Text1。在“菜单编辑器”窗口中添加一个标题为“颜色”、名为“Color”的主菜单。向其中添加“红色”(Re d)、“蓝色”(Blue)和“绿色”(Green)的3个菜单项。 将顶级菜单的Visible属性设为False(将“可见”前面的“ √”去掉,使其不可见), (2) 编写事件代码。Private Sub Text1_MouseDown(Button As In teger, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu Color, 4 Or 2 End IfEnd SubPrivate Sub Red_Click() Text1.ForeColor = vbRedEnd SubPrivat e Sub Blue_Click() Text1.ForeColor = vbBlue End SubPri vate Sub Green_Click() Text1.ForeColor = vbGreen End Sub9.2 工具栏设计9.2.1 手工方式设计工具栏 手工制作工具栏的一般步骤和注意事项: (1) 在窗体界面上,添加一个图片框, 将该图片框作为工具按钮的容器。 (2) 设置图片框的Align属性以便控制工具栏(图片框)在窗体中的位置。当改变窗体的大小时 ,图片框(Align属性值非0)会自动地改变大小以适应窗体的宽度或高度。 (3) 选定图片框,在图片框中添加需在工具栏中显示 的控件。通常使用的控件有:命令按钮、图形方式的单选按钮和复选框按钮、下拉列表框等。 (4) 设置控件属性。通常在工具按钮上通 过不同的图像来表示对应的功能,还可以设置按钮的ToolTipText属性为工具按钮添加工具提示。 (5) 编写代码。由于工具 按钮通常用于提供对其他(菜单)命令的快捷访问,所以一般都是在其Click事件代码中调用对应的菜单命令。为文本框添加一个简单的工具栏 。通过工具栏中的按钮,改变文本字体的大小。 (1) 建立用户界面。 在窗体中添加一个作为容器使用的图片框,在其中添加 由3个命令按钮组成的按钮组Command1(0)~Command1(2)。再增加一个文本框控件Text1。 (2) 设置对象属性。 将图片框的Align属性设为1(图片框贴于窗体的顶部)。按钮的Caption属性分别设为“10”、“12”和“14”。文本 框Text1的MultiLine属性设为“True”,允许多行显示,将ScrollBars属性设为2(带垂直滚动条)。 (3) 编 写事件代码。Private Sub Command1_Click(index As Integer) n = index Se lect Case n Case 0 Text1.FontSize = 10 Case 1 Te xt1.FontSize = 12 Case 2 Text1.FontSize = 14End SelectEnd Sub9.2.2 使用Toolbar控件设计工具栏利用Toolbar制作工具栏,单击工具栏中的“加粗”、“斜体”、“下划线”按钮 ,就能执行相应的操作,工具按钮带有对应的工具提示。 (1) 建立用户界面。 ① 添加Toolbar控件。选择“工程”菜 单→“部件”,打开“部件”对话框,选中Microsoft Windows Common Controls 6.0,单击“确定”按钮 。 ② 双击工具箱中的Toolbar控件向窗体中添加工具栏控件,双击其中的“ImageList”按钮向窗体中添加图像列表控件 。 ③ 向窗体中添加一个文本框控件Text1。 (2) 设置对象属性。 ① 将文本框Text1的MultiLine属性 设为True,将ScrollBars属性设为2。 ② 指向ImageList控件,单击右键,在快捷菜单中选择“属性”,打开“ 属性页”对话框,选择“图像”选项卡,单击“插入图片”按钮,选出需要的图像。 ③ 在窗体工具栏上单击右键,在 “属性页”对话框 ,在“图像列表”选项中选取ImageList1,建立与图像列表框的关联。选择“按钮”选项卡,单击其中的“插入按钮”按钮,向工具栏中 添加3个工具按钮,索引值分别为1、2、3,关键字分别为B、I、U,对应图像的索引值分别为1、2、3,将工具提示文本分别设为“粗体” 、“斜体”、“下划线” 。 (3) 编写事件代码。Private Sub Toolbar1_ButtonClick(ByVal B utton As MSComctlLib.Button) Select Case Button.Index Case 1 Text1.FontBold = True Case 2 Text1.FontItalic = True Case 3 Text1.FontUnderline = True End SelectEnd Sub9.3 滚动条控件ScrollBar9.3.1 滚动条控件的类型 有水平和垂直两种,可以通过水平滚动条(HScrollBars )和垂直滚动条(VScrollBars)工具建立。9.3.2 滚动条控件的程序设计1. 简单的滚动条设计在窗体上建立一个滚动条控 件,当拖动滚动条时,在文本框中显示滑块当前位置代表的值。(1) 建立用户界面和设置对象属性。(2) 编写事件代码。Private Sub HScroll1_Change() HScroll1.Max = 200 HScroll1.Min = 1 HScr oll1.SmallChange = 1 HScroll1.LargeChange = 5 Text1.Text = HScr oll1.ValueEnd Sub2. 设计调色板利用滚动条控制色彩,并且返回色彩的RGB值。 (1) 建立应用程序用户界面。 先增加一个框架Frame1,激活Frame1后,在其中增加一个图片框Picture1,一个文本框Text1,一个水平滚动条控件数 组HScroll1(0)~HScroll1(2)和一个标签控件数组Label1(0)~Label1(2)。 (2) 设置对象属性 。 (3) 编写事件代码。Private Sub HScroll1_Change(Index As Integer) Pictu re1.BackColor = RGB(HScroll1(0), HScroll1(1), HScroll1(2)) r = L Trim(Str(HScroll1(0))) g = LTrim(Str(HScroll1(1))) b = LTrim(St r(HScroll1(2))) Text1.Text = "Color=RGB(" & r & "," & g & "," & b & ")"End SubPrivate Sub Text1_GotFocus() Text1.SelStart = 10En d SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then a = InStr(10, Text1.Text, ",") b = InStr(a + 1, Te xt1.Text, ",") c = InStr(b + 1, Text1.Text, ")") HScroll1(0 ) = Val(Mid(Text1.Text, 11, a – 10)) HScroll1(1) = Val(Mid(Tex t1.Text, a + 1, b – a)) HScroll1(2) = Val(Mid(Text1.Text, b + 1, c – b – 1)) End IfEnd Sub9.3.3 滚动条控件程序设计的相关知识1. 滚动条控件的常用属性 (1) Min、Max属性 返回或设置滚动条所能代表的最小值和最大值。Min属性的默认值为0,Max属性的默认值为3276 7。 (2) Value属性返回或设置滚动条的当前位置,其返回值始终介于Max和Min属性值之间。 (3) Large Change属性 返回或设置单击滚动框和滚动箭头之间的区域时,滚动条控件Value属性值的改变量。 (4) Small Change属性 返回和设置当用户单击滚动箭头时,滚动条控件Value属性值的改变量。当单击滚动条两端的箭头按钮时,滚动条的值将按最小改变量进行递增或递减。该属性的默认值为1。2. 滚动条控件的常用事件 (1) Change事件 在程序运行过程中,每当滚动条的Value属性发生变化时,就发生Change事件。而每当用户用鼠标单击滚动箭头、单击滚动框与箭头之间的区域或沿着滚动条拖拉滚动框的动作结束时,滚动条的Value属性就发生变化。 在实际应用中,由于在单击滚动条或滚动箭头时,将产生Change事件,因此常利用Change事件来获得滚动条变化后的最终值。 (2) Scroll事件 尽管拖动滚动框会引起Value属性发生变化,从而触发Change事件,但在滚动条内拖动滚动框的过程中,并不发生Change事件。此时将触发产生滚动条的Scroll(滚动)事件。当然滚动框的位置改变后,又将触发产生Change事件。结束 |
|