在Windows95、Windows98或NT的風格中,有按動滑鼠器右鍵彈出下拉式功能表的操作,在VB執行環境下,有一些控制項本身具有彈下拉式功能表的功能,如TexTbox控制項等,但大多數編輯類控制項以及表單本身卻沒有此功能,要在視窗中任意位置實現PopUpMenu(彈出式菜單),可藉助VB的菜單工具來實現。
首先,開啟VB的“工具”菜單條,利用“菜單編輯器”為表單產生一個菜單:
標題(Caption) 菜單條名(Name)
編輯 menuEdit
……複製 mnuCopy
……剪下 munCut
其次,將產生的menuEdit菜單設定為不可視。
Private Sub Form_Load()
Me.menuEdit.Visibe=False
′menuEdit菜單設定為不可視
End Sub
然後,利用MouseDown事件實現任意位置彈出PopUpMenu,如下例:
本例中以RichTexBox控制項為例,在其上面實現複製、剪下功能。
1.複製功能的實現。
Private Sub MnuCopy_Click()
Clipboar.Clear′將剪貼簿清空
′將RichTexBox控制項上選擇上的內容複寫到剪貼簿
Clipboard.SetTextRichTexBox1.SelText
End Sub
2.剪下功能的實現。
Private Sub MnuCut_Click()
Clipboard.Clear ′將剪貼簿清空
′將RichTextBox控制項上選擇了的內容複寫到剪貼簿
Clipboard.SetTextRichBox1.SelText
′將RichTexBox控制項上選擇了的內容刪除
SendKeys″{DELETE}″,True
End Sub
3.在RichTexBox控制項的MouseDown事件中實現任意位置彈出PopUPMenu。
OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)
Dim MnuFile AS Menu ′聲明一個菜單類型的變數
Set munFile=Me.MenuEdit ′將MenuEdit賦給菜單變數
if Button=2 Then ′判斷是否按動滑鼠器右鍵
′判斷RichTexBox控制項上選擇了的內容是否存在,決定複製、剪下菜單條是否可操作。
If Len(RichTexBox.Text)=0 Or Len(RichTexBox.SelText)=0 Then
mnuCopy.Enabled=Flase ′複製菜單條不可操作。
nmuCut.Enabled=False ′剪下菜單條不可操作。
nmuCopy.Enabled=True ′複製菜單條可操作。
nmuCut.Enabled=True ′剪下菜單條可操作。
End IF
PopupMenu mnuFile ′彈出PopUpMenu。
End If
End Sub
這樣,在VB執行環境中,操作表單上的RichTexBox控制項,按動滑鼠器右鍵就可彈出下拉式功能表,實現複製、剪下功能。