江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
第二章: vb界面设计(重点概述)

2.4    定制菜单

1.   菜单概述

  Windows中的菜单一般由菜单条、菜单、菜单项、子菜单、弹出式菜单组成。

2.   普通菜单的设计

1 给菜单命名

   菜单标题和菜单命令也有CaptionName属性,设置了这两个属性就等于创建了菜单。Name是一个抽象名称,Caption是屏幕上可见的,可在Caption里加入 “&” 来设置热键。

2  增加和删除菜单

    Menu Editor中部有三个命令钮分别是下一个、插入、删除插入可用来增加新的菜单。在这三个键下面的Caption列表框里选中菜单项(这时它的底色就变成深蓝色),单击插入键,Visual Basic将上一个增亮菜单下推并增亮一空行,就可以输入新菜单名和标题了。删除键可用来删掉菜单。选中要删掉的菜单,单击Delete键就可以删掉它了。

3  移动菜单标题

    有四种情况:向上移动,向下移动,向左缩排,向右缩排,选中某一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位置。如果按左右箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么它将变成一个菜单命令;如果缩排两次,那么它将成为一个子菜单命令。VB里可以总共设计四层子菜单。

4  设置分离条

     分离条是指在菜单中将命令分组的线,VB将分离条也看成一个菜单项,它也需要CaptionName属性,而且也有其它属性,分离条与菜单项的区别是分离条的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 滑块的MinMaxValue属性

      这三个属性和进程条的这三个属性差不多,MinMax表示滑块的最小和最大值,Value表示进程条的当前值。

3 滑块的LargeChangeSmallChange属性

      LargeChange规定了当用户用鼠标单击滑块时,滑块可移动的距离。SmallChange规定了用户按左箭头或右箭头时滑块的移动距离。

5. 创建TabStrip页框控件

1 设置样式

    TabStrip属性窗口里选择General标签,在Style列表框里选择TabsButtons样式。

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 BoxRadio ButtonValue属性值就可以知道它们是否被选上了。

3. 通过列表框和组合框输入数据

(1) 列表框List Box和组合框Combo Box的不同

    它们在WindowsOpenSave As对话框里最为常见。组合框又包括三种类型,这三种类型要在它的Style属性里设置。列表框仅仅把可以选择的项目列出来,而组合框里有的类型可以允许用户输入数据。它们的异同是:

名称

是否有下拉选项

是否允许用户输入

 列表框

 组合框类型0

 组合框类型1

 组合框类型2

(2) 列表项目的增减

   使用AddItemRemoveItem语句可以增减列表项目。通常将项目增减的语句放入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) 滚动条的主要属性及事件

  1MinMax属性

    Min属性决定滚动条最左端或最顶端所代表的值。Max属性决定滚动条最右端或最下端所代表的值。

  2LargeChange,SmallChange属性

    SmallChange决定在滚动条两端的箭头钮上单击时改变的值。LargeChange决定在滑块上方或下方区域单击时改变的值。

  3Value属性

    Value属性代表当前滑块所处位置的值,这个值由滑块的相对位置决定。

  4Change事件

    当滑块位置发生变化时就引发了Change事件。

 (2) 取得滚动条的数据

   滚动条并不是一个数据输入的好控件,因为无法从滚动条上直接看出输入的数据,但它的优点是可以表示一定范围里的相对位置。为了得到数据,只要取得滚动条的Value属性就可以了。

5.  InputBox函数

  InputBox函数提供一个简单的对话框供用户输入信息。在把其它版本的BASIC程序移植到Visual Basic时,InputBox函数通常用来代替INPUT语句。这个对话框的样子基本上是上面的样子。

  它的完整语法是x = InputBox (prompt, title, default, xpos, ypos, helpfile, context)

    其中,prompt是提示的字符串,这个参数是必须的。title是对话框的标题,是可选的。default是文本框里的缺省值,也是可选的。xposypos决定输入框的位置。helpfilecontext用于显示与该框相关的帮助屏幕。返回值 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函数,FontNameFontSizeFontBoldFontItalicFontStrikethruFontUnderline属性,CurrentXCurrentY属性等。

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是消息的内容,是一个字符串型的变量,typetitle参数是可以省略的,type参数指定显示的按钮是什么及使用什么样的图标(这个参数往往让新程序员思考几分钟),title参数指定消息框的标题。type参数的含义是:

数值

符号常量

意义   

0

vbOKOnly

只显示 Ok 按钮

1

 vbOKCancel

显示 Ok  Cancel 按钮

2

vbAbortRetryIgnore

显示 Abor  Retry  Ignore 按钮

3

vbYesNoCancel 

显示 Yes  No  Cancel 按钮

4

vbYesNo 

显示 Yes  No 按钮   

5

vbRetryCancel

显示 Retry Cancel 按钮

16

vbCritical 

Stop Sign对极其重要的问题提醒用户

32

 vbQuestion

Question Mark增亮没有危险的问题

48

vbExclamation

 Exclamation Mark强调警告用户必须知道的事情

64

vbInformation

Information Mark可以使乏味的信息变得有趣

0

vbDefaultButton1

第一个按钮缺省

256

vbDefaultButton2

 第二个按钮缺省

512

vbDefaultButton3

 第三个按钮缺省   

  例如:Action = MsgBox (“Are you girl?”, vbYesNo + vbQuestion, “Question”)。使用这个函数时Visual Basic将产生一个标题为Question,具有问号和YesNo按钮的消息框。作为一个函数,本质上还是要返回值的,MsgBox的返回值确定了用户的选择,程序可根据返回值做出相应的动作。

返回值

含义

返回值

含义

1

选择 Ok 按钮

5

选择 Ignore 按钮

 2

选择 Cancel 按钮

选择 Yes 按钮

 3

选择 Abort 按钮

7

选择 No 按钮

 4

选择 Retry 按钮 

   

2. Print方法,Cls方法,Tab函数

 (1) Print方法

   Print 方法的语法是:object. Print expressionlist

      object表示Print作用的对象,比如是Form或者是Picture Boxobject是可以省略的,省略时的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指清除的对象,可以是FormPicture Box。如果object省略,通常Visual Basic都把当前的窗口作为Cls操作的对象。

3. Format函数

  Format函数用于制定字符串或数字的输出格式。语法是:x = Format (expression,fmt)

  expression是所输出的内容。fmt是指输出的格式,这是一个字符串型的变量,这一项若省略的话,那么Format函数将和Str函数的功能差不多。如:

语句

输出

Format (2, “0.00”)

2.00

 Format (.7, “0%”)

 70% 

Format (1140, “$#,##0”)

$1,140

   简单地,fmt里的字符是这样的:

字符

意义

字符

意义

 0

 显示一数字,若此位置没有数字则补0

 . 

小数点

 #

 显示一数字,若此位置没有数字则不显示

 ,

 千位的分隔符

 %

 数字乘以100并在右边加上”%”

- + $ ( )

 这些字出现在fmt里将原样打出

  Format函数也可用来对时间进行输出。

fmt

输出

fmt

输出

m/d/yy

 8/16/96

  h:mm:ss a/p

 10:41:29 p 

d-mmmm-yy

 16-August-96

  h:mm

 22:41 

d-mmmm

 16-August

  h:mm:ss

 22:41:29 

mmmm-yy

 august-96

 m/d/yy h:mm

 8/16/96 22:41 

hh:mm AM/PM

 10:41 PM

   

4. FontNameFontSizeFontBoldFontItalicFontStrikethruFontUnderline属性

  很明显,这些属性都与字体有关,许多控件都有这些属性。通常它们在设计阶段可以双击font属性来设置,运行期间可以直接设置。它们的意义是:

FontName 

字体的名称

  FontItalic

 字体是否用斜体显示 

FontSize

 字体的大小

  FontStrikethru 

字体是否有删除线 

FontBold

字体是否用粗体显示

  FontUnderline

 字体是否有下划线

     如:Text1.FontBold = True,将把Text1文本框的FontBold属性设为True

5. 窗体,图片框的CurrentXCurrentY属性

    这两个不可见的属性确定了下一次打印或绘图的水平及垂直坐标。如上面讲的Print方法,当expression后使用 “,” 时,Visual Basic将改变CurrentXCurrentY值为下一打印区域开始的值,于是,输出便指向了下一个打印区域。而Cls方法将把操作对象的CurrentXCurrentY的值设为(0,0)

6. 通过标签控件输出

     标签控件的特点是运行时不能直接修改它,通常一个文本框旁边都有一个标签用来标识文本框。标签的AutosizeWordWrap属性是一对有用且令人困惑的属性。