四、菜單項的控制
在使用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
在使用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