VB考試教程:菜單程序設(shè)計四菜單項的控制

字號:

四、菜單項的控制
    在使用Windows或VB菜單時,已見過“與眾不同”的菜單項,如有的呈灰色,單擊這類菜單項不執(zhí)行任何操作;有的菜單項前有“√”號,或菜單項的某個字母下面有下劃線等等。下面將介紹如何在菜單中增加這些屬性。
    1、菜單項的有效屬性(有效性控制)
    為了使程序正常運行,有時需要使某些菜單項失效,以防止出現(xiàn)誤操作。例如前面的例子中,只有在文本框中輸入數(shù)字后才能進行運算,否則運算沒有意義。因此,如果尚未輸入數(shù)據(jù),則應(yīng)使執(zhí)行加、減、乘、除的菜單項失效,在輸入數(shù)據(jù)后才生效。為此,可增加下面兩個事件過程:
     Private Sub Text1_Change()
     If Text1.Text = "" Then
     Add.Enabled = False
     Min.Enabled = False
     Mul.Enabled = False
     Div.Enabled = False
     Else
     Add.Enabled = True
     Min.Enabled = True
     Mul.Enabled = True
     Div.Enabled = True
     End If
     End Sub
    --------------------------------------------------------------------------------
    Private Sub Text2_Change()
     If Text2.Text = "" Then
     Add.Enabled = False
     Min.Enabled = False
     Mul.Enabled = False
     Div.Enabled = False
     Else
     Add.Enabled = True
     Min.Enabled = True
     Mul.Enabled = True
     Div.Enabled = True
     End If
     End Sub
    除增加上述兩個事件過程外,還要取消Add、Min、Mul、Div等4個菜單項的“有效”屬性設(shè)置。
    方法:打開“菜單編輯器”窗口,把對應(yīng)于這4個菜單項的數(shù)據(jù)區(qū)中的“有效”屬性復(fù)選框中的“√”去掉即可。
    2、菜單項的復(fù)選屬性(菜單項的標(biāo)記)
    所謂菜單項標(biāo)記,就是在菜單項前加上一個“√”。
    它有兩個作用:
    一是明顯地表示當(dāng)前某個(或某些)命令狀態(tài)是“On”或“Off”;
    二是可以表示當(dāng)前選擇的是哪個菜單項。
    增加方法:
    在“菜單編輯器”窗口中,由“復(fù)選”屬性設(shè)置,前面有“√”則為“True”,否則為“Flase”。
    也可在應(yīng)用程序代碼中設(shè)置。
    一般來說,菜單項標(biāo)記通常是動態(tài)的加上或取消的,所以,常在程序代碼中根據(jù)執(zhí)行情況設(shè)置。
    例2 設(shè)計一個菜單,該菜單有一個主菜單項和若干個子菜單項。當(dāng)單擊子菜單項時,分別顯示十進制、八進制和十六進制數(shù),并在相應(yīng)的菜單項前面加上“√”標(biāo)記。
    界面:
    一個文本框、6個標(biāo)簽。
    菜單屬性:
    標(biāo)題 名稱 內(nèi)縮符號 復(fù)選
    顯示數(shù)字
    八進制
    十進制
    十六進制
    清除
    退出 Numsys
    Octv
    Dec
    Hexv
    Clean
    Quit 無
    1
    1
    1
    1
    1 無
    無
    無
    無
    有
    無
    設(shè)計菜單:
    編寫代碼:
     Option Explicit
     Dim answer As Single
    --------------------------------------------------------------------------------
     Private Sub octv_Click()
     answer = Val(Text1.Text)
     Octv.Checked = True
     Dec.Checked = False
     Hexv.Checked = False
     Clean.Checked = False
     Quit.Checked = False
     Label5.Caption = Oct$(answer) '十進制轉(zhuǎn)換為八進制
     End Sub