熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

VB編程的必備技巧

2013-11-11 21:37:20  來源: Windows系統管理 

  對編程者來說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 FileMouseMove(ButtonAs
  Integer Shift As Integer X As Single Y As Single)
  FileDrag icon on
  End Sub
  
  將如下代碼添加到Form的DragOver事件中
  
  Private Sub FormDragOver(Source As Control
  X As Single Y As Single State As Integer)
  FileDrag ′icon off
  End Sub
  
  按下F功能鍵執行此程序得到的運行結果是將鼠標指針移動到該文件列表框控件上時程序將把所選中的ICO文件作為缺省的鼠標光標將鼠標指針離開該控件時光標則會自動恢復為缺省的形狀
  
  怎樣在窗體上點鼠標右鍵產生一個彈出式選單(PopUp Menu)
  大家都知道在Windows//的桌面和許多流行軟件的視窗中當我們點鼠標右鍵時會在鼠標的當前位置彈出一個快捷選單許多愛好編程的朋友是不是也希望能在自己的程序裡有類似的功能呢?其實這並不困難筆者經過一番努力在VB下找出一個通用的方法供大家分享
  
  要實現上述功能需分兩個步驟
   利用VB的選單編輯器(Menu Editor)編輯你希望彈出的選單及子選單注意要將選單的Visible屬性設置為:False
   在窗體(Form)的MouseDown事件中編寫程序來激發編輯好的選單假設選單名為PopMenu程序源碼如下
  
  Private Sub FormMouseDown
  (Button As Integer Shift As Integer
  X As Single Y As Single)
  If Button = vbRightButton Then
  PopMenuVisible = 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 //計算機有一個名字運行regeditHKEY-LOCAL-MACHINESystemCurrentControlSetcontrolComputerNameComputerName中將發現ComputerName=Default( 或其它字符串)在regedit下可以查看和修改這個名字我們還可在程序中通過WinAPI提供的GetComputerNameSetComputerName這兩個函數來查看和修改計算機的名字下面以VB為例來探討如何編寫一個可查看和修改計算機名字的程序
  
  插入一個新模塊在其中添加如下代碼
  
  ′聲明 GetComputerName
  Declare Function GetComputerName Lib″kernel ″Alias″
  GetComputerNameA″(Byval lpBuffer As
  StringnSize 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 (sComputerNamelCompputerNameLen)
  If lResult 〈〉 Then Cname=Left$
  (sComputerNamelComputerNameLen)
  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注意別忘了設置PictureAutoSize=TRUE接著加上水平和垂直滾動條默認名字分別為HScrollVScroll以後加載圖形到Picture就可以了最後在窗體中引入其它控件一個按鈕(Command)默認名為Command和一個Microsoft Common Dialog Control默認名為CommonDialog具體VB代碼如下
  
  Private Sub FormLoad()
  PictureLeft =
  PictureTop =
  PictureWidth = PictureWidth
  PictureHeight = PictureHeight
  VScrollMin =
  HScrollMin =
  HScrollMin =
  VScrollMax = PictureHeight - PictureHeight
  HScrollMax = PictureWidth - PictureWidth
  If HScrollMax 〈 Then HScrollEnabled = False
  If VScrollMax 〈 Then VScrollEnabled = False
  End Sub
  Private Sub CommandClick()
  On Error GoTo ErrExit
  CommonDialogFilter =
  Bitmap file(*bmp)|*bmp|All File(**)|*
  CommonDialogFilterIndex =
  CommonDialogShowOpen
  PicturePicture = LoadPicture(CommonDialogfilename)
  VScrollMin =
  HScrollMin =
  VScrollMax = PictureHeight - PictureHeight<
From:http://tw.wingwit.com/Article/os/xtgl/201311/8827.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.