对编程者来说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 //中计算机有一个名字运行regedit在HKEY-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< |