我在这里学编程 进阶篇 共28页[1 2 3 >4< 5 6 7 ».. 最后一页]

在运行时控制菜单

   三、在运行时控制菜单

  在应用程序中,菜单常常会因执行条件的变化而发生一些相应的变化。这些变化包括菜单项有效性的变化、菜单项标记的显示与隐藏以及菜单项的增减。有效性控制

与按钮的有效性一样,菜单项也有“有效”与“无效”两种状态。在“无效”状态时,菜单项以浅灰色显示,不能响应用户的任何操作。一些菜单项只有在满足一定条件时才有效。例如,VB(编辑1菜单中的[粘贴]命令,只有当当前剪贴板中有内容时,该选项才有效,否则无效,并以浅灰色显示。

菜单控件也有Enabled属性,该属性用来设置菜单在程序运行时是否有效。在设计阶段,该属性既可以在[菜单编辑器]对话框中设置,也可以在 [属性]窗口中设置。在默认情况下,菜单控件的Enabled属性的值为Trueo[菜单编辑器]对话框中的菜单控件列表中选中某菜单控件,取消对[有效]复选框的选中,或在菜单控件的[属性]窗口中设置Enabled属性的值为False,即可将该菜单项设置为无效。

也可以在程序运行时通过代码来设置菜单项的有效性。

  菜单项的有效性

    本例将对上例代码进行一点修改,使程序在未新建菜单项无效,[新建]菜单项有效。在新建文档后,[关闭]效,而[新建]菜单项变为无效。

    单击[属性]窗口上方的对象列表框,从中选择菜单控件MenClose属性列表中将Enabled属性的值设置为False

打开[代码]窗口,将[新建][关闭]菜单项的Click修改如下:

Private Sub MenClose_Click()
      Text1.Visible = False
      MenNew.Enabled = True
      MenClose.Enabled = False
    End Sub   

Private Sub MenNew_Click()
      Text1.Text = ""
      Text1.Visible = True
      MenNew.Enabled = False
      MenClose.Enabled = True
    End Sub

运行修改后的程序,程序启动后,打开[文件]菜单,可贝单项无效,如图所示。

单击[新建]菜单项,则[关闭]舅效,而[新建]菜单项变为无效,如图所示。

  菜单项标记

    有些菜单项表示的是一种开关状态,这些命令其实就是在两种不同的状态之间切换。这些菜单项就像一个开关,当处于“开”状态时,菜单项上显示 一个“√”标记,当处于“关”状态时,不显示任何标记。

还有一种情况常常使用到菜单项标记。当菜单栏中有多个并列的选项时,菜单项标记用来表明用户所选的是哪一个选项。例如,在VB[窗口]单中,显示有“√”标记的窗口为当前活动的窗口。

菜单控件的Checked属性用来决定是否在菜单项上显示“√”标记。该属性的默认值为False,即不显示“√”标记。如果设置它的值为True,则显示“√”标记。  [菜单编辑器]对话框中的[复选]选项对应的是Checked属性,选中该选项与在[属性]窗口中设置Checked属性的值为True的效果是一样的。

  实例菜单项标记

   

  通过对实例程序的修改,使用户在单击[粗体]选项后,该选项的左边出现一个“√”标记,表明当前文本以粗体显示。再次单击[粗体]选项,则“√”标记消失,且文本恢复以标准显示。在[字号]子菜单中,用户所选的字号前会也出现一个“√”标记。

打开[代码]窗口,修改MenFont ClickMenSize_Click事件过程如下:

Private Sub MenFont_Click()
     If MenFont.Checked = False Then
       Text1.FontBold = True
       MenFont.Checked = True
     Else
       Text1.FontBold = False
       MenFont.Checked = False
     End If
     End Sub

  

Private Sub MenSize_Click(Index As Integer)
     Select Case Index
     Case 0
       Text1.FontSize = 14
       MenSize(0).Checked = True
       MenSize(1).Checked = False
       MenSize(2).Checked = False
    Case 1
      Text1.FontSize = 18
      MenSize(1).Checked = True
      MenSize(0).Checked = False
      MenSize(2).Checked = False
    Case 2
      Text1.FontSize = 20
      MenSize(2).Checked = True
      MenSize(0).Checked = False
      MenSize(1).Checked = False
    End Select
    End Sub

    MenFonlClick事件过程中,使用了If语句来判断菜单项当前的:其值为False,则将文本变为粗体,并设置其值为Tme;如果其值为Tn文本的粗体效果,并设置其值为False。在MenSizeCUck事件过程中,4响应C1ick事件后都将执行三步操作:首先设置文本的字号;其次嘉 Checked属性的值设置为Tme,即在菜单项上显示“√”标记;最后是4控件的Checked属性的值设置为False,即取消其他菜单项上的“√”标

    运行修改后的程序,执行[文件]菜单中的[新建]命令,拱框中输入一段文本,执行[编辑]菜单中的[粗体]命令,则该偷出现了一个“√”标记,同时,文本字体变为粗体。再次单击[粗,则“√”标记消失,文本恢复标准显示。单击[字号]子菜单中的 选项,则该选项的左边出现了一个“√”标记,并且文本字号变为三号,如图所示。

   

 

菜单项的隐藏与显示

在一些应用程序中,有些菜单项是隐藏的,只有当满足一定条件时,这些菜单项才会显示出来菜单控件的Visible属性用来决定菜单项是否显示。该属性的默认值为True,即菜单项总是显示出来的。如果设置它的值为False,则菜单项将不显示出来。  (菜单编辑器}对话框中的[可见]选项对应的是Visible属性,取消对该选项的选中与在[属性]窗口中设置Visible属性的值为False的效果是一样的。

  实例菜单项的隐藏与显示

    修改实例使得只有在字体为粗体时,[字号]子菜单才显示出来。

    单击[属性]窗口上方的对象列表框,从中选择菜单控件MenMsize,在属性列表中将Visible属性的值设置为False。打开[代码]窗口,修改MenFont Click事件过程如下:

    Private Sub MenFont_Click()
         If MenFont.Checked = False Then
            Text1.FontBold = True
            MenFont.Checked = True
            MenSize1.Visible = True
         Else
            Text1.FontBold = False
            MenFont.Checked = False
            MenSize1.Visible = False
         End If
         End Sub

运行修改后的程序,单击[编辑]菜单,可见在下拉菜单 中没出现子菜单。

单击[]选项,则[字号]子菜单又出现.

我在这里学编程 进阶篇 共28页[1 2 3 >4< 5 6 7 ».. 最后一页]