⑴ VB編程的必備技巧
對編程者來說,VB很容易上手,但要深入、靈活地駕馭它還要下一番功夫。筆者在這里介紹幾稿猜個較為典型的編程技巧,希望能對廣大VB愛好者有所幫助。
一.怎樣創建自定義的游標
1.當在設計一個應用程序時,Visual Basic允許程序員將許多控制項的MousePointer屬性設計成12個預先定義好的滑鼠游標之一。然而,有些程序員或許會希望顯示一個預定義形狀之外的游標。本文說明如何創建一個不同的滑鼠指針(游標),包括為一個沒有MousePointer屬性的控制項創建游標。
要在Visual Basic應用程序中將游標(滑鼠指針)改變成個不同的形狀,可以添加代碼來改變希望監視的控制項的MouseMove和DragOver事件。
MouseMove事件所包含的代碼用於觸發該控制項的Drag方法。當滑鼠在被選中的控制項上移動的時候,輪流顯示新的滑鼠指針。當滑鼠指針離開該控制項時,則DragOver事件被觸發。在Visual Basic程序中,可以重新復位此Drag屬性,以便以前的滑鼠指針能夠被再次顯示出來。
2.下面的樣常式序實現當滑鼠指針移動到一個文件列表框控制項上時,將其改變成不同的形狀。
首先採用預設的方碧敬宏法建立Form1。在Form1上添加一個文件列表框控制項,採用預設的方法建立File1。將File1控制項的DragIcon屬性設置為所選擇的.ICO文件。
將如下代碼添加到File1的MouseMove事件中:
Private Sub File1-MouseMove(ButtonAs
Integer, Shift As Integer, X As Single, Y As Single)
File1.Drag 1 ''icon on
End Sub
---- 將如下代碼添加到Form1的DragOver事件中:
Private Sub Form-DragOver(Source As Control,
X As Single, Y As Single, State As Integer)
File1.Drag 0 ′icon off
End Sub
按下F5功能鍵執行此程序。得到的運行結果是:將滑鼠指針移動到該文件列表框控制項上時,程序將把所選中的.ICO文件作為預設的滑鼠游標;將滑鼠指針離開該控制項時,游標則會自動恢復為預設的形狀。
二.怎樣在窗體上點滑鼠右鍵產生一個彈出式選單(PopUp Menu)?
大家都知道,在Windows95/98/2000的桌面和許多流行軟體的視窗中,當我們點滑鼠右鍵時,會在滑鼠的當前位置彈出一個快捷選單。許多愛好編程的朋友是不是也希望能在自己的程序里有類似的功能呢?其實,這並不困難。筆者經過一番努力,在VB下找出一個通用的方法,供大家分享。
要實現上述功能,需分兩個步驟:
1. 利用VB的選單我器(Menu Editor)我你希望彈出的選單及子選單,注意,要將選單的Visible屬性設置為:False。
2. 在窗體(Form1)的MouseDown事件中編寫程序,來激發我好的選單,假設選單名為PopMenu,程序源碼如下:
Private Sub Form-MouseDown
(Button As Integer, Shift As Integer,
X As Single, Y As Single)
If Button = vbRightButton Then
PopMenu.Visible = True
PopupMenu PopMenu
End If
End Sub
上述方法是針對窗體的,我們也可以針對任意控制項,用滑鼠右鍵點擊控制項時,也彈出一個快捷選單。方法也很簡單,只要把上述代碼放到相應控制項的MouseDown事件中,就可以了。
三.怎樣動態地在窗體上判斷某區域內是否有控制項存在?
在筆者的一個小程序中,想在窗體的某個區域輸出數據,這就要求在這個區域內不能有其他控制項存在,那麼,怎麼才能知道在窗體的某個區域內,是否有控制項存在呢?
為了判斷在窗體的悔冊某個區域中,是否含有控制項,我們可以利用以下VB程序來實現:
Function GetControl(x1 As Single, y1 As Single,
x2 as Single, y2 as Single) As Control
Dim Control as Control
For Each Control In Form1
With Control
If (x1 〈= .Left) And (x2 〉= .Left) And _
(y1 〈= .Top) And (y2 〉= .Top) Or _
(x1 〈=.Left + Width) And (x2 〉= .Left + Width) And _
(y1 〈= .Top) And (y2 〉= .Top) Or _
(x1 〈= .Left) And (x2 〉= Left) And _
(y1 〈= .Top + Height) And (y2 〉= .Top + Height) Or _
(x1 〈= . Left + Width) And (x2 〉= .Left + Width) And _
(y1 〈= .Top + Height) And (y2 〉= .Top + Height) Then
Set GetControl = Control
Exit Function
End If End With
Next
Set GetControl = Nothing
End Function
註:(x1, y1)和(x2, y2)分別為選定矩形區域的左上角和右下角點的坐標值。
該程序通過計算窗體上所有控制項的四個角的位置來判斷控制項是否與選定區域相交,並返回相交的控制項。