第二章: vb界面设计(重点概述) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.4 定制菜单 1. 菜单概述 Windows中的菜单一般由菜单条、菜单、菜单项、子菜单、弹出式菜单组成。 2. 普通菜单的设计 (1) 给菜单命名 菜单标题和菜单命令也有Caption和Name属性,设置了这两个属性就等于创建了菜单。Name是一个抽象名称,Caption是屏幕上可见的,可在Caption里加入 “&” 来设置热键。 (2) 增加和删除菜单 在Menu Editor中部有三个命令钮分别是下一个、插入、删除。插入可用来增加新的菜单。在这三个键下面的Caption列表框里选中菜单项(这时它的底色就变成深蓝色),单击插入键,Visual Basic将上一个增亮菜单下推并增亮一空行,就可以输入新菜单名和标题了。删除键可用来删掉菜单。选中要删掉的菜单,单击Delete键就可以删掉它了。 (3) 移动菜单标题 有四种情况:向上移动,向下移动,向左缩排,向右缩排,选中某一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位置。如果按左右箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么它将变成一个菜单命令;如果缩排两次,那么它将成为一个子菜单命令。VB里可以总共设计四层子菜单。 (4) 设置分离条 分离条是指在菜单中将命令分组的线,VB将分离条也看成一个菜单项,它也需要Caption和Name属性,而且也有其它属性,分离条与菜单项的区别是分离条的Caption属性必须是连字号即减号。也就是,当设置了一个Caption属性为 “-” 的菜单项时,实际上就设置了一个分离条,分离条的名字可以是barFile1之类,以表明分离条的位置。 (5) 菜单的各种简单属性 在菜单编辑器里有许多确认框和一些文本框及一个下拉式的列表框,这些决定了菜单的各种属性。 1) Checked 复选属性 这个属性值设置为真,将在菜单命令左边产生一个打勾的确认标志。 2) Enabled有效属性 各种各样的用户会产生千奇百怪的操作,在许多Edit菜单里都会有不同形式的让菜单命令模糊的情况。Enabled属性为真,则菜单命令是清晰的,Enabled属性为假,则菜单命令是模糊的,这时用户就不能选中这个菜单项了。 3) Visible 可见属性 对暂时不用的菜单, 如果把Visible属性设为假,则菜单根本不会出现在屏幕上。这样做比把Enabled属性设为假显得更加干脆! 4) Index属性 可以生成菜单命令数组,用索引号区分开。例如向File菜单中添加一系列最近打开的文件名。添加菜单可用Load方法。以上属性可以在运行时设置,形成动态的菜单的情况。 例如: mnuUndo.Enabled = False mnuProperty.Visible = False 还可以改变Caption等属性。 mnuUndo.Caption = “Redo” (6)为每个菜单项编写事件过程代码 3. 生成弹出式菜单(或浮动菜单) 几乎每个Windows应用程序都提供弹出式菜单,用户可以右键单击窗体或控件取得这个菜单。弹出式菜单也属于普通菜单,只是不固定在窗体上,而是可以在任何地方显示。 弹出式菜单用PopupMenu方法调用。假设已经用菜单编辑器生成了名为mnuedit的菜单,则可以在MouseUp事件加入如下代码就可以生成弹出式菜单: If Button = 2 Then PopupMenu mnuedit 4.菜单设计示例 例 5 2.5 设计状态条、工具栏、进程条等 1. 创建状态条 选中状态条,按F4键进入属性窗口,双击(Custom)可以进入主要的设置窗口SBarCtrl属性窗口。 (1) 选择面板形状 在SBarCtrl属性窗口里选择General标签,在Style列表框里选择多面板(缺省形式)或单面板简单文本形式。 (2) 添加或删除状态条面板 在SBarCtrl属性窗口里选择Panels标签,单击Insert按钮添加一个面板,或单击Remove按钮删除一个面板。 (3) 在单面板里显示文本 在SBarCtrl属性窗口里选择General标签,在SimpleText框里输入想显示在状态条面板里的文本。用代码显示的方式是: StatusBar1.SimpleText = "New string to appear" (4) 在多面板里显示文本或图形 1). 在SBarCtrl属性窗口里选择Panels标签,用Index旁的按钮选择面板序号。 2). 在Text框里输入想显示在状态条面板里的文本。 3). 如果想加入图形,单击Browse按钮打开一个图形选择对话框,选择想加入的图形,然后单击打开按钮。 4). 最后按确定按钮。 5). 用代码显示的方式是:StatusBar1.Panels(x).Text = "New string to appear" 6). 编写代码 如果是一个单面板状态条,当用户单击状态条时,只需用下面的事件过程来响应: Private Sub StatusBar1_Click() End Sub 如果是一个多面板状态条,就需要鉴别用户单击的是哪一个面板,可用下面的事件过程来识别用户所单击的面板: Private Sub StatusBar1_PanelClick(ByVal Panel As Panel) Select Case Panel.Index Case 1 'Code to follow if user clicks the first panel Case 2 'Code to follow if user clicks the second panel Case 3 'Code to follow if user clicks the third panel End Select End Sub 2. 创建工具栏 1. 建立工具条 1).在工具箱里单击工具条图标,拖到窗体的任何位置,Visual Basic自动将ToolBar移到顶部。 2).按F4键打开属性窗口。 3).双击(Custom),打开ToolBar属性窗口。 4). 选择Buttons标签。 5). 单击Insert按钮,Visual Basic就会在你的工具条上显示一个空按钮,现在为你的每一个按钮重复这一步。 6). 单击确定按钮。 如果想把按钮分组,首先生成一个分隔的按钮,再在刚才提到的对话框里将这个按钮的Style属性改为3-Separator。 (2) 为工具条增加图画 1). 在Visual Basic工具箱里单击ImageList图标,并将它拖到窗体的任何位置(位置不重要,因为它总是不可见的)。 2). 按F4打开属性窗口。 3). 双击(Custom),打开ImageListCtrl属性窗口。 4). 选择Image标签。 5). 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的工具条按钮重复此步。 6). 单击确定按钮。 7). 单击工具条,按F4,双击(Custom),显示ToolBar属性对话框。 8). 选择General标签,在ImageList框里选择刚才添加的ImageList控件。 9). 选择Buttons标签,单击紧挨Index框的向左或向右箭头以选择一个按钮序号。出现在工具条最左边的按钮序号为1。 10). 在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。 11). 为每个按钮重复第10步。 12). 单击确定按钮,现在Visual Basic就会在工具条上显示精美的图形了。 (3) 为工具条添加文本信息 在ToolBar属性对话框中选择Buttons标签,在Caption框里输入想显示在按钮上的文本。 (4) 添加ToolTips ToolTips是一种当点到工具按钮时弹出的小标签。ToolTips很方便,可以告诉那些新手每个按钮是干什么用的。在刚才提到的ToolBar属性对话框中选择Buttons标签,在ToolTipText框里输入想作为ToolTip的文本。 (5) 编写代码 双击工具条,以下面的格式输入代码就可以了: Private Sub Toolbar1_ButtonClick(ByVal Button As Button) Select Case Button.Index Case 1 'Code to follow if user clicks the first button Case 2 'Code to follow if user clicks the second button Case 3 'Code to follow if user clicks the third button End Select End Sub 3. 创建进程条 进程条的三个属性: (1). Min属性代表进程条全空时的值,缺省时为0。 (2). Max属性代表进程条全空时的值,缺省时为100。 (3) Value属性代表进程条当前的值(不用在属性窗口里找这个属性,它不出现在属性窗口中,但它的确存在),它大于Min属性,小于Max属性。改变Value属性的值将改变进程条的进度显示。 为了了解进程条的功能,在窗体里添加一个进程条和一个命令钮,双击命令钮进入代码窗口,键入如下代码: Private Sub Command1_Click() If ProgressBar1.Value < ProgressBar1.Max Then ProgressBar1.Value = ProgressBar1.Value + 5 Else ProgressBar1.Visible = False ‘当进程条满了的时候让进程条消失 End If End Sub 4. 创建滑块 (1). 选择滑块的外观 1). Orientation属性决定滑块的方位,可以是垂直的或水平的滑块。 2). TickStyle属性决定滑块标记的样子。 3). TickFrequency属性规定了沿着滑块的标记的间隔大小,缺省的状态是1,表明每个可能值都出现标记,如果把值设置为3,则每三个可能值出现一个标记。 (2) 滑块的Min,Max,Value属性 这三个属性和进程条的这三个属性差不多,Min,Max表示滑块的最小和最大值,Value表示进程条的当前值。 (3) 滑块的LargeChange,SmallChange属性 LargeChange规定了当用户用鼠标单击滑块时,滑块可移动的距离。SmallChange规定了用户按左箭头或右箭头时滑块的移动距离。 5. 创建TabStrip页框控件 (1) 设置样式 在TabStrip属性窗口里选择General标签,在Style列表框里选择Tabs或Buttons样式。 (2) 规定TabStrip的标题和ToolTips 1). 在TabStrip属性窗口里选择Tabs标签,在Caption框里输入标题。 2). 在TabStrip属性窗口里选择Tabs标签,在ToolTipText框里输入ToolTip。 (3) 增减标签总数 在TabStrip属性窗口里选择Tabs标签,单击Insert Tab按钮增加标签,单击Remove Tab按钮删除标签。 (4) 在TabStrip上显示图形 1) 在窗体里拖入一个ImageList控件, 2) 按F4打开属性窗口。 3) 双击(Custom),打开ImageListCtrl属性窗口并选择Image标签。 4) 单击Insert Picture,在现在图形的对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的Tab按钮重复此步。 5) 单击确定按钮。现在ImageList里存储了需要的图形。 6) 选择TabStrip,进入TabStrip属性窗口并选择General标签,在ImageList列表框里选择ImageList1。 7) 现在选择Tabs标签,单击紧挨Index框的向左或向右箭头以选择一个Tab序号。在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。 8) 单击确定按钮。 (5) 用户响应 可用类似下面的代码来识别用户在哪一个项目上单击。 Private Sub TabStrip1_Click() Select Case TabStrip1.SelectedItem.Index Case 1 'Code to follow if user clicks the first tab Case 2 'Code to follow if user clicks the second tab Case 3 'Code to follow if user clicks the third tab End Select End Sub (6) 在TabStrip上放置其它控件 在用户选择了标签后,TabStrip要求编写代码来显示或隐藏控件。下面的代码上是一个TabStrip上有一个命令钮和一个选项钮的例子,当用户选择了第一个Tab时,选项钮出现,当用户选择了第二个Tab时,命令钮出现。 Private Sub TabStrip1_Click() Select Case TabStrip1.SelectedItem.Index Case 1 Command1.Visible = False Option1.Visible = True Case 2 Command1.Visible = True Option1.Visible = False End Select End Sub 2.6 Visual Basic的输入机制 程序的基本操作就是数据的输入,数据处理和数据的输出。Visual Basic可中用于输入的控件主要有:文本框Text Box、复选框Check Box、选项按钮Option Button、列表框List Box、组合框Combo Box、滚动条Scroll Bar、通用对话框控件。还有一个函数叫InputBox函数,也可用于数据的输入。 1. 通过文本框输入数据 只要取得文本框的Text属性就可以对其进行操作了。下面的代码可将Text1文本框的正文变成大写输出至Text2文本框。 Private Sub Form_Click () Text2.Text = UCase(Text1.Text) End Sub 2. 通过复选框和选项按钮输入数据 只要检测到Check Box和Radio Button的Value属性值就可以知道它们是否被选上了。 3. 通过列表框和组合框输入数据 (1) 列表框List Box和组合框Combo Box的不同 它们在Windows的Open,Save As对话框里最为常见。组合框又包括三种类型,这三种类型要在它的Style属性里设置。列表框仅仅把可以选择的项目列出来,而组合框里有的类型可以允许用户输入数据。它们的异同是:
(2) 列表项目的增减 使用AddItem,RemoveItem语句可以增减列表项目。通常将项目增减的语句放入Form_Load事件里。 ListBoxName. AddItem item ComboBoxName. AddItem item item是新项目名称,必须是字符串类型,非字符串类型可通过Str函数或Format函数来转换。 列表框,组合框的每一项目都有一个Index值,第一个项目的Index值是0,第二个是1,依此类推。删除项目可通过删除其Index值来实现。 ListBoxName. RemoveItem item ComboBoxName. RemoveItem item 如:ListBoxName. RemoveItem 0则删除了第一项,这时原来的第二项就变成了第一项。 可以在设计阶段设定列表项目, 方法是: 在属性窗口选择List属性,将出现一个下拉列表,在列表中输入第一项,按Ctrl+Enter,输入第二项……,最后用Enter结束。 (3) 取得列表框/组合框的数据 可以通过取得Text属性或通过取得ListIndex属性来判断哪一项被选择了。ListIndex属性的值也同样是第一个为0,第二个为1……如: If List1.Text = “Visual Basic” Then Instructions If List1.ListIndex = 1 Then Instructions 组合框有时允许用户自己输入数据,这时所输入数据的ListIndex值为-1。 4. 通过滚动条Scroll Bar取得数据 在Visual Basic的工具箱里有两种滚动条:一种是垂直的,一种是水平的,它们的差异无非是摆放的方向不一样。 (1) 滚动条的主要属性及事件 1)Min,Max属性 Min属性决定滚动条最左端或最顶端所代表的值。Max属性决定滚动条最右端或最下端所代表的值。 2)LargeChange,SmallChange属性 SmallChange决定在滚动条两端的箭头钮上单击时改变的值。LargeChange决定在滑块上方或下方区域单击时改变的值。 3)Value属性 Value属性代表当前滑块所处位置的值,这个值由滑块的相对位置决定。 4)Change事件 当滑块位置发生变化时就引发了Change事件。 (2) 取得滚动条的数据 滚动条并不是一个数据输入的好控件,因为无法从滚动条上直接看出输入的数据,但它的优点是可以表示一定范围里的相对位置。为了得到数据,只要取得滚动条的Value属性就可以了。 5. InputBox函数 InputBox函数提供一个简单的对话框供用户输入信息。在把其它版本的BASIC程序移植到Visual Basic时,InputBox函数通常用来代替INPUT语句。这个对话框的样子基本上是上面的样子。 它的完整语法是:x = InputBox (prompt, title, default, xpos, ypos, helpfile, context) 其中,prompt是提示的字符串,这个参数是必须的。title是对话框的标题,是可选的。default是文本框里的缺省值,也是可选的。xpos,ypos决定输入框的位置。helpfile,context用于显示与该框相关的帮助屏幕。返回值 x 将是用户在文本框里输入的数据,x是一个字符串类型的值。如果用户按了Cancel钮,则 x 将为空字符串。 6. 使用通用对话框控件 Windows应用程序里的Open对话框,Save As对话框在各个应用程序里看起来都是一样的,通用对话框控件就可以提供这些对话框的标准功能。 (1) Open对话框及Save As对话框 打开Open对话框使用ShowOpen方法,打开Save As对话框使用ShowSave方法。 Private Sub mnuOpen_Click () On Error GoTo ErrorHandler CommonDialog1.CancelError = True CommonDialog1.Filter = "Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*" CommonDialog1.ShowOpen ' display Open common dialog box. Call OpenFile(CommonDialog1.FileName) ErrorHandler: Exit Sub End Sub 其中第三行决定了在文件格式类型栏里出现的文件类型。第五行需要一个自己的打开文件的过程,这个过程需要的参数就是通用对话框返回的文件名。通用对话框的CancelError属性设为True的话,用户单击Cancel按钮将产生一个错误信息程序,凭借这个信息程序可以检测到用户的放弃操作。 (2) Color对话框 下面的过程可用用户选择的颜色作为窗体的底色。 Private Sub mnuColor_Click () On Error GoTo CancelButton CommonDialog1.CancelError = True CommonDialog1.ShowColor Form1.BackColor = CommonDialog1.Color CancelButton: Exit Sub End Sub (3) Fonts对话框 下面的过程可用字体对话框改变文本框的字体: Private Sub mnuFonts_Click () On Error GoTo CancelButton CommonDialog1.CancelError = True CommonDialog1.Flags = cdlCFBoth ' Flags property must be set to cdlCFBoth CommonDialog1.ShowFont ' Display Font common dialog box. Text1.FontName = CommonDialog1.FontName Text1.FontSize = CommonDialog1.FontSize Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic Text1.FontUnderline = CommonDialog1.FontUnderline Text1.FontStrikethru = CommonDialog1.FontStrikethru Text1.ForeColor = CommonDialog1.Color CancelButton: Exit Sub End Sub 代码的第三行出现了通用对话框的Flags属性决定了通用对话框的一些可选项,不过即使不赋值给Flags,代码也一样会按缺省的情况去执行的。 2.7 Visual Basic的输出机制 作为输出的对象,Visual Basic提供了标签,文本框,窗体,图片框(Picture Box)等用于输出,而且Visual Basic里也有一堆命令、属性涉及信息的输出,较常用的有:MsgBox函数,Print方法,Cls方法,Tab函数,Format函数,FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属性,CurrentX,CurrentY属性等。 1. 通过MsgBox函数输出 了解Windows应用程序的人都知道当用户操作错误时,应用程序往往打出一个消息框来提示用户的错误,象这样: Dim Action As Integer Action = MsgBox("单击确定键将引爆此计算机!", vbYesNo + vbCritical + vbDefaultButton2, "警告!") If Action = 6 Then Explode 这个功能在Visual Basic里是通过MsgBox函数来实现的,这样程序员就不必自己去画一个消息框了。语法是: Action = MsgBox (msg, type, title) 其中,msg是消息的内容,是一个字符串型的变量,type及title参数是可以省略的,type参数指定显示的按钮是什么及使用什么样的图标(这个参数往往让新程序员思考几分钟),title参数指定消息框的标题。type参数的含义是:
例如:Action = MsgBox (“Are you girl?”, vbYesNo + vbQuestion, “Question”)。使用这个函数时Visual Basic将产生一个标题为Question,具有问号和Yes,No按钮的消息框。作为一个函数,本质上还是要返回值的,MsgBox的返回值确定了用户的选择,程序可根据返回值做出相应的动作。
2. Print方法,Cls方法,Tab函数 (1) Print方法 Print 方法的语法是:object. Print expressionlist object表示Print作用的对象,比如是Form或者是Picture Box,object是可以省略的,省略时的Print往往在窗体上输出。expressionlist是输出的内容,允许许多项数据的输出,在数据间可以加入“,”或”;”。加入分号将使下一数据项紧挨着上一数据项输出。而加入逗号,则Visual Basic将下一数据项在下一打印区输出,其实就是空了几个空格后再输出。两个打印区之间有14个字符的宽度,其实这也很难衡量,比如14个“W”所占的宽度大概是14个“i”所占宽度的三倍多。幸好中国日本之类的方块字所占的宽度基本上是一样的,所以较好处理一些。 (2) Tab函数 Tab函数只用在Print方法中,它用来移动下一个字符到打印位置,这将省去数空格的功夫。语法是:Tab (column) Tab函数将Visual Basic自定义的14字符宽的打印区扔到一边,用自己的方式定义了新的灵活的打印区宽度。 (3) Cls方法 Cls也是一个古老的BASIC语句,原来它的作用总是把屏幕变成黑色,然后在左上角或左下角闪烁一个光标,Visual Basic里它的作用是清除绘图语句和Print语句产生的文字和图形。 语法是:object. Cls object指清除的对象,可以是Form或Picture Box。如果object省略,通常Visual Basic都把当前的窗口作为Cls操作的对象。 3. Format函数 Format函数用于制定字符串或数字的输出格式。语法是:x = Format (expression,fmt) expression是所输出的内容。fmt是指输出的格式,这是一个字符串型的变量,这一项若省略的话,那么Format函数将和Str函数的功能差不多。如:
简单地,fmt里的字符是这样的:
Format函数也可用来对时间进行输出。
4. FontName,FontSize,FontBold,FontItalic,FontStrikethru,FontUnderline属性 很明显,这些属性都与字体有关,许多控件都有这些属性。通常它们在设计阶段可以双击font属性来设置,运行期间可以直接设置。它们的意义是:
如:Text1.FontBold = True,将把Text1文本框的FontBold属性设为True。 5. 窗体,图片框的CurrentX,CurrentY属性 这两个不可见的属性确定了下一次打印或绘图的水平及垂直坐标。如上面讲的Print方法,当expression后使用 “,” 时,Visual Basic将改变CurrentX,CurrentY值为下一打印区域开始的值,于是,输出便指向了下一个打印区域。而Cls方法将把操作对象的CurrentX,CurrentY的值设为(0,0)。 6. 通过标签控件输出 标签控件的特点是运行时不能直接修改它,通常一个文本框旁边都有一个标签用来标识文本框。标签的Autosize和WordWrap属性是一对有用且令人困惑的属性。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||