對編程者來說
VB很容易上手
但要深入
靈活地駕馭它還要下一番功夫
筆者在這裡介紹幾個較為典型的編程技巧
希望能對廣大VB愛好者有所幫助
一怎樣創建自定義的光標 當在設計一個應用程序時
Visual Basic允許程序員將許多控件的MousePointer屬性設計成
個預先定義好的鼠標光標之一
然而
有些程序員或許會希望顯示一個預定義形狀之外的光標
本文說明如何創建一個不同的鼠標指針(光標)
包括為一個沒有MousePointer屬性的控件創建光標
要在Visual Basic應用程序中將光標(鼠標指針)改變成個不同的形狀
可以添加代碼來改變希望監視的控件的MouseMove和DragOver事件
MouseMove事件所包含的代碼用於觸發該控件的Drag方法
當鼠標在被選中的控件上移動的時候
輪流顯示新的鼠標指針
當鼠標指針離開該控件時
則DragOver事件被觸發
在Visual Basic程序中
可以重新復位此Drag屬性
以便以前的鼠標指針能夠被再次顯示出來
下面的樣例程序實現當鼠標指針移動到一個文件列表框控件上時
將其改變成不同的形狀
首先采用缺省的方法建立Form
在Form
上添加一個文件列表框控件
采用缺省的方法建立File
將File
控件的DragIcon屬性設置為所選擇的
ICO文件
將如下代碼添加到File
的MouseMove事件中
Private Sub File
MouseMove(ButtonAs
Integer
Shift As Integer
X As Single
Y As Single)
File
Drag
icon on
End Sub
將如下代碼添加到Form
的DragOver事件中
Private Sub Form
DragOver(Source As Control
X As Single
Y As Single
State As Integer)
File
Drag
′icon off
End Sub
按下F
功能鍵執行此程序
得到的運行結果是
將鼠標指針移動到該文件列表框控件上時
程序將把所選中的
ICO文件作為缺省的鼠標光標
將鼠標指針離開該控件時
光標則會自動恢復為缺省的形狀
二怎樣在窗體上點鼠標右鍵產生一個彈出式選單(PopUp Menu) 大家都知道
在Windows
/
/
的桌面和許多流行軟件的視窗中
當我們點鼠標右鍵時
會在鼠標的當前位置彈出一個快捷選單
許多愛好編程的朋友是不是也希望能在自己的程序裡有類似的功能呢?其實
這並不困難
筆者經過一番努力
在VB下找出一個通用的方法
供大家分享
要實現上述功能
需分兩個步驟
利用VB的選單編輯器(Menu Editor)編輯你希望彈出的選單及子選單
注意
要將選單的Visible屬性設置為:False
在窗體(Form
)的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(x
As Single
y
As Single
x
as Single
y
as Single) As Control
Dim Control as Control
For Each Control In Form
With Control
If (x
〈=
Left) And (x
〉=
Left) And _
(y
〈=
Top) And (y
〉=
Top) Or _
(x
〈=
Left + Width) And (x
〉=
Left + Width) And _
(y
〈=
Top) And (y
〉=
Top) Or _
(x
〈=
Left) And (x
〉= Left) And _
(y
〈=
Top + Height) And (y
〉=
Top + Height) Or _
(x
〈=
Left + Width) And (x
〉=
Left + Width) And _
(y
〈=
Top + Height) And (y
〉=
Top + Height) Then
Set GetControl = Control
Exit Function
End If End With
Next
Set GetControl = Nothing
End Function
注
(x
y
)和(x
y
)分別為選定矩形區域的左上角和右下角點的坐標值
該程序通過計算窗體上所有控件的四個角的位置來判斷控件是否與選定區域相交
並返回相交的控件
四獲取和修改計算機名字的方法 在Win
/
/
中
計算機有一個名字
運行regedit
在
HKEY-LOCAL-MACHINESystemCurrentControlSetcontrolComputerNameComputerName
中將發現
ComputerName
=
Default
( 或其它字符串)
在regedit下可以查看和修改這個名字
我們還可在程序中通過Win
API提供的GetComputerName
SetComputerName這兩個函數來查看和修改計算機的名字
下面以VB為例來探討如何編寫一個可查看和修改計算機名字的程序
插入一個新模塊
在其中添加如下代碼
′聲明 GetComputerName
Declare Function GetComputerName Lib″kernel
″Alias″
GetComputerNameA″(Byval lpBuffer As
String
nSize As Long)As Long
′聲明 SetComputerName
Declare Function SetComputerName Lib″kernel
″Alias ″
SetComputerNameA″(Byval lp ComputerName As String)As Long
′定義一個獲取計算機名字的函數
Public Function GetCName (CName) As Boolean
Dim sComputerName As String '計算機的名字
Dim lComputerName As Long
'計算機名字的長度
Dim lResult As Long
'GetComputerName的返回值
Dim RV As Boolean
′GetCName返回值
若為TRUE則表示操作成功
lComputerNameLen=
sComputerName=Space (lComputerNameLen)
lResult=GetComputerName (sComputerName
lCompputerNameLen)
If lResult 〈〉
Then Cname=Left$
(sComputerName
lComputerNameLen)
RV=True
Else RV=False
End If
GetCName=RV
End Function
′定義一個修改計算機名字的函數
Public Function SetCName (CName ) As Boolean
Dim lResult As Long
Dim RV As Boolean
lResult=SetComputerName (CName)
If lResult 〈〉
Then
RV=True′修改成功
Else RV=False
End If
SetCName=RV
End Function
在窗體中添加一命令按鈕Command
雙擊該按鈕並在其中添加如下代碼
Sub Command
-Click ()
DIM CN AS String
x=GetCName (CN)
Print ″This Computer Name is :″
CN
CN=″MYCOMPUTER″
x=SetCName (CN )
Print ″Now the Computer name is :″
CN
End Sub
OK
保存上述設置和代碼
然後按F
運行該程序
五給VB控件PictureBox加滾動條的方法 用過PictureBox控件的朋友都知道
在其中我們可以加載圖片
當圖片不是很大時
可能還不會有什麼問題
但是
如果所加載的圖片比PictureBox大時
我們只能看到圖片的一部分
那麼
怎麼才能看到其他的部分呢?為了解決上述問題
我們可以在圖片框(PictureBox)內部加上水平和垂直滾動條
利用滾動條來顯示看不到的圖片
具體方法如下
首先給工程(Project)添加一個OCX控件
單擊選單上的工程(Project)選單項
在彈出的下拉選單中點擊組件(Components)
選中其中的
Microsoft Common Dialog Control
確定完成加載工作
然後畫一個PictureBox
采用VB提供的默認名字Picture
再在Picture
上面畫一個PictureBox
默認名字為Picture
注意別忘了設置
Picture
AutoSize=TRUE
接著
加上水平和垂直滾動條
默認名字分別為
HScroll
VScroll
以後加載圖形到Picture
上
就可以了
最後
在窗體中引入其它控件
一個按鈕(Command)
默認名為Command
和一個
Microsoft Common Dialog Control
默認名為CommonDialog
具體VB代碼如下
Private Sub Form
Load()
Picture
Left =
Picture
Top =
Picture
Width = Picture
Width
Picture
Height = Picture
Height
VScroll
Min =
HScroll
Min =
HScroll
Min =
VScroll
Max = Picture
Height - Picture
Height
HScroll
Max = Picture
Width - Picture
Width
If HScroll
Max 〈
Then HScroll
Enabled = False
If VScroll
Max 〈
Then VScroll
Enabled = False
End Sub
Private Sub Command
Click()
On Error GoTo ErrExit
CommonDialog
Filter =
Bitmap file(*
bmp)|*
bmp|All File(*
*)|*
*
CommonDialog
FilterIndex =
CommonDialog
ShowOpen
Picture
Picture = LoadPicture(CommonDialog
filename)
VScroll
Min =
HScroll
Min =
VScroll
Max = Picture
Height - Picture
Height<
From:http://tw.wingwit.com/Article/os/xtgl/201311/8827.html