午夜伦理在线-午夜伦理在线观看-午夜毛片免费看-午夜美女久久久久爽久久-午夜免费


曙海教育集團(tuán)論壇開(kāi)發(fā)語(yǔ)言培訓(xùn)專區(qū)VB語(yǔ)言 → VB編程的必備技巧


  共有7025人關(guān)注過(guò)本帖樹(shù)形打印

主題:VB編程的必備技巧

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個(gè)性首頁(yè) | 博客 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信
等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊(cè):2010-11-12 11:08:23
VB編程的必備技巧  發(fā)帖心情 Post By:2010-12-14 12:04:08

---- 對(duì)編程者來(lái)說(shuō),VB很容易上手,但要深入、靈活地駕馭它還要下一番功夫。筆者在這里介紹幾個(gè)較為典型的編程技巧,希望能對(duì)廣大VB愛(ài)好者有所幫助。

---- 一.怎樣創(chuàng)建自定義的光標(biāo)

---- 1.當(dāng)在設(shè)計(jì)一個(gè)應(yīng)用程序時(shí),Visual Basic允許程序員將許多控件的MousePointer屬性設(shè)計(jì)成12個(gè)預(yù)先定義好的鼠標(biāo)光標(biāo)之一。然而,有些程序員或許會(huì)希望顯示一個(gè)預(yù)定義形狀之外的光標(biāo)。本文說(shuō)明如何創(chuàng)建一個(gè)不同的鼠標(biāo)指針(光標(biāo)),包括為一個(gè)沒(méi)有MousePointer屬性的控件創(chuàng)建光標(biāo)。

----要在Visual Basic應(yīng)用程序中將光標(biāo)(鼠標(biāo)指針)改變成個(gè)不同的形狀,可以添加代碼來(lái)改變希望監(jiān)視的控件的MouseMove和DragOver事件。

----MouseMove事件所包含的代碼用于觸發(fā)該控件的Drag方法。當(dāng)鼠標(biāo)在被選中的控件上移動(dòng)的時(shí)候,輪流顯示新的鼠標(biāo)指針。當(dāng)鼠標(biāo)指針離開(kāi)該控件時(shí),則DragOver事件被觸發(fā)。在Visual Basic程序中,可以重新復(fù)位此Drag屬性,以便以前的鼠標(biāo)指針能夠被再次顯示出來(lái)。

---- 2.下面的樣例程序?qū)崿F(xiàn)當(dāng)鼠標(biāo)指針移動(dòng)到一個(gè)文件列表框控件上時(shí),將其改變成不同的形狀。

---- 首先采用缺省的方法建立Form1。在Form1上添加一個(gè)文件列表框控件,采用缺省的方法建立File1。將File1控件的DragIcon屬性設(shè)置為所選擇的.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功能鍵執(zhí)行此程序。得到的運(yùn)行結(jié)果是:將鼠標(biāo)指針移動(dòng)到該文件列表框控件上時(shí),程序?qū)阉x中的.ICO文件作為缺省的鼠標(biāo)光標(biāo);將鼠標(biāo)指針離開(kāi)該控件時(shí),光標(biāo)則會(huì)自動(dòng)恢復(fù)為缺省的形狀。
---- 二.怎樣在窗體上點(diǎn)鼠標(biāo)右鍵產(chǎn)生一個(gè)彈出式選單(PopUp Menu)?

---- 大家都知道,在Windows95/98/2000的桌面和許多流行軟件的視窗中,當(dāng)我們點(diǎn)鼠標(biāo)右鍵時(shí),會(huì)在鼠標(biāo)的當(dāng)前位置彈出一個(gè)快捷選單。許多愛(ài)好編程的朋友是不是也希望能在自己的程序里有類似的功能呢?其實(shí),這并不困難。筆者經(jīng)過(guò)一番努力,在VB下找出一個(gè)通用的方法,供大家分享。

---- 要實(shí)現(xiàn)上述功能,需分兩個(gè)步驟:

---- 1. 利用VB的選單編輯器(Menu Editor)編輯你希望彈出的選單及子選單,注意,要將選單的Visible屬性設(shè)置為:False。

---- 2. 在窗體(Form1)的MouseDown事件中編寫程序,來(lái)激發(fā)編輯好的選單,假設(shè)選單名為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
---- 上述方法是針對(duì)窗體的,我們也可以針對(duì)任意控件,用鼠標(biāo)右鍵點(diǎn)擊控件時(shí),也彈出一個(gè)快捷選單。方法也很簡(jiǎn)單,只要把上述代碼放到相應(yīng)控件的MouseDown事件中,就可以了。
---- 三.怎樣動(dòng)態(tài)地在窗體上判斷某區(qū)域內(nèi)是否有控件存在?

---- 在筆者的一個(gè)小程序中,想在窗體的某個(gè)區(qū)域輸出數(shù)據(jù),這就要求在這個(gè)區(qū)域內(nèi)不能有其他控件存在,那么,怎么才能知道在窗體的某個(gè)區(qū)域內(nèi),是否有控件存在呢?

---- 為了判斷在窗體的某個(gè)區(qū)域中,是否含有控件,我們可以利用以下VB程序來(lái)實(shí)現(xiàn):

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)分別為選定矩形區(qū)域的左上角和右下角點(diǎn)的坐標(biāo)值。
---- 該程序通過(guò)計(jì)算窗體上所有控件的四個(gè)角的位置來(lái)判斷控件是否與選定區(qū)域相交,并返回相交的控件。

---- 四.獲取和修改計(jì)算機(jī)名字的方法

---- 在Win 95/98/2000中,計(jì)算機(jī)有一個(gè)名字。運(yùn)行regedit,在"HKEY-LOCAL-MACHINE\System\CurrentControlSetcontrol\ComputerName\ComputerName"中將發(fā)現(xiàn)"ComputerName"="Default"( 或其它字符串),在regedit下可以查看和修改這個(gè)名字。我們還可在程序中通過(guò)Win32API提供的GetComputerName、SetComputerName這兩個(gè)函數(shù)來(lái)查看和修改計(jì)算機(jī)的名字。下面以VB為例來(lái)探討如何編寫一個(gè)可查看和修改計(jì)算機(jī)名字的程序。

---- 1.插入一個(gè)新模塊,在其中添加如下代碼:

′聲明 GetComputerName
Declare Function GetComputerName Lib″kernel 32″Alias″
GetComputerNameA″(Byval lpBuffer As
String,nSize As Long)As Long
′聲明 SetComputerName
Declare Function SetComputerName Lib″kernel 32″Alias ″
SetComputerNameA″(Byval lp ComputerName As String)As Long
′定義一個(gè)獲取計(jì)算機(jī)名字的函數(shù)
Public Function GetCName (CName) As Boolean
Dim sComputerName As String '計(jì)算機(jī)的名字
Dim lComputerName As Long
'計(jì)算機(jī)名字的長(zhǎng)度
Dim lResult As Long
'GetComputerName的返回值
Dim RV As Boolean
′GetCName返回值,若為TRUE則表示操作成功
lComputerNameLen=256
sComputerName=Space (lComputerNameLen)
lResult=GetComputerName (sComputerName,lCompputerNameLen)
If lResult 〈〉0 Then Cname=Left$ (sComputerName,lComputerNameLen)
RV=True
Else RV=False
End If
GetCName=RV
End Function
′定義一個(gè)修改計(jì)算機(jī)名字的函數(shù)
Public Function SetCName (CName ) As Boolean
Dim lResult As Long
Dim RV As Boolean
lResult=SetComputerName (CName)
If lResult 〈〉0 Then
RV=True′修改成功
Else RV=False
End If
SetCName=RV
End Function

---- 2.在窗體中添加一命令按鈕Command1,雙擊該按鈕并在其中添加如下代碼:
Sub Command1-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, 保存上述設(shè)置和代碼,然后按F5運(yùn)行該程序。
---- 五.給VB控件PictureBox加滾動(dòng)條的方法

---- 用過(guò)PictureBox控件的朋友都知道,在其中我們可以加載圖片。當(dāng)圖片不是很大時(shí),可能還不會(huì)有什么問(wèn)題,但是,如果所加載的圖片比PictureBox大時(shí),我們只能看到圖片的一部分,那么,怎么才能看到其他的部分呢?為了解決上述問(wèn)題,我們可以在圖片框(PictureBox)內(nèi)部加上水平和垂直滾動(dòng)條,利用滾動(dòng)條來(lái)顯示看不到的圖片。具體方法如下:

----首先給工程(Project)添加一個(gè)OCX控件,單擊選單上的工程(Project)選單項(xiàng),在彈出的下拉選單中點(diǎn)擊組件(Components),選中其中的"Microsoft Common Dialog Control 5.0",確定完成加載工作;然后畫(huà)一個(gè)PictureBox,采用VB提供的默認(rèn)名字Picture1, 再在Picture1上面畫(huà)一個(gè)PictureBox,默認(rèn)名字為Picture2,注意別忘了設(shè)置:Picture2.AutoSize=TRUE;接著,加上水平和垂直滾動(dòng)條,默認(rèn)名字分別為:HScroll1,VScroll1;以后加載圖形到Picture2上,就可以了;最后,在窗體中引入其它控件:一個(gè)按鈕(Command),默認(rèn)名為Command1和一個(gè)"Microsoft Common Dialog Control",默認(rèn)名為CommonDialog1。具體VB代碼如下:

Private Sub Form-Load()
Picture2.Left = 0
Picture2.Top = 0
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
VScroll1.Min = 0
HScroll1.Min = 0
HScroll1.Min = 0
VScroll1.Max = Picture2.Height - Picture1.Height
HScroll1.Max = Picture2.Width - Picture1.Width
If HScroll1.Max 〈 0 Then HScroll1.Enabled = False
If VScroll1.Max 〈 0 Then VScroll1.Enabled = False
End Sub
Private Sub Command-Click()
On Error GoTo ErrExit
CommonDialog1.Filter =
"Bitmap file(*.bmp)|*.bmp|All File(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Picture2.Picture = LoadPicture(CommonDialog1.filename)
VScroll1.Min = 0
HScroll1.Min = 0
VScroll1.Max = Picture2.Height - Picture1.Height
HScroll1.Max = Picture2.Width - Picture1.Width
If HScroll1.Max 〈 0 Then HScroll1.Enabled = False
If VScroll1.Max 〈 0 Then VScroll1.Enabled = False
ErrExit:
End Sub
Private Sub HScroll1-Change()
Picture2.Left = -HScroll1.Value
End Sub
Private Sub VScroll1-Change()
Picture2.Top = -VScroll1.Value
End Sub
---- 該程序通過(guò)點(diǎn)擊Command1按鈕,在彈出的對(duì)話框中選擇一個(gè)圖形文件加載到Picture2中,利用水平和垂直滾動(dòng)條就可以實(shí)現(xiàn)圖片的滾動(dòng)。
---- 六.用VB做聊天程序的方法

---- 所謂"聊天"是指兩個(gè)程序能夠發(fā)送數(shù)據(jù)給對(duì)方。這個(gè)程序涉及到數(shù)據(jù)通訊的知識(shí),仿佛很復(fù)雜,不過(guò),由于VB給我們提供了一個(gè)Winsock控件,問(wèn)題就變得很簡(jiǎn)單了。

---- 先編寫"聊天(主機(jī))"程序。在窗體里添加Winsock控件,并設(shè)置其Protocol屬性為1-SckUDPProtocol,其他屬性為缺省值。接著添加兩個(gè)標(biāo)簽和兩個(gè)文本框,設(shè)置兩個(gè)標(biāo)簽的標(biāo)題屬性分別為"接收窗"和"發(fā)送窗";兩個(gè)文本框的標(biāo)題屬性為空。最后編寫代碼:

---- 1."聊天(主機(jī))"

Private Sub Form-Load()
′設(shè)置網(wǎng)絡(luò)地址
Winsock1.LocalPort=1024
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1999
End Sub
Private Sub Text1-Change()
′發(fā)送用戶輸入的內(nèi)容
Winsock1.SendData Text1.Text
End Sub
Private Sub Winsock1-DataArrival
(Byval bytesTotal As Long)
Dim rec As String
′接收對(duì)方數(shù)據(jù)并在文本框內(nèi)顯示
Winsock1.GetData rec, vb String
Text2.Text=rec
End Sub

---- 2."聊天(副機(jī))"

Private Sub Form_Load()
′設(shè)置網(wǎng)絡(luò)地址
Winsock1.LocalPort=1999
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1024

---- 其他部分程序與(主機(jī))相同。最后將兩個(gè)程序存盤,并編譯成執(zhí)行(.Exe)文件。現(xiàn)在就可以使用這個(gè)程序進(jìn)行對(duì)話了。
---- 七.文本框中文本的某一特定字符或字符串同時(shí)高亮顯示的方法

---- 由于普通TextBox控件不支持不連續(xù)字符串的同時(shí)高亮顯示,所以我們選擇RichTextBox控件。單擊工程(Project)選單項(xiàng),在彈出的下拉選單中單擊組件(Components)選單項(xiàng),從彈出的對(duì)話框中選擇Microsoft Rich Textbox Control 5.0復(fù)選框,確定加載RichTextBox控件。

---- 新建(New)一個(gè)工程,在窗體(Form)上添加一個(gè)RichTextBox控件和兩個(gè)Command(按鈕)控件,都采用系統(tǒng)默認(rèn)的Name屬性值;設(shè)置RichTextBox的Text屬性值為空,Command1和Command2的Caption屬性值分別設(shè)為"輸入文本"和"選擇字符串"。最后,添加如下VB代碼:

Private Sub Command1-Click()
Dim str As String
Dim Text As String
str=″輸入文本″
Text=InputBox(str)
RichTextBox1.Text=Text
End Sub
Private Sub Command2-Click()
Dim str As String
Dim Text As String
Dim Position As Integer
Dim Lenth As Integer
str=″輸入要高亮顯示的字符串″
Text=InputBox(str)
If Text 〈〉 ″″ Then
Position=InStr(RichTextBox1.Text, Text)-1
Lenth=Len(Text)
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Do While InStr(Position+Lenth+
1, RichTextBox1.Text, Text) 〈〉 0
Position=InStr(Position+Lenth+
1, RichTextBox1.Text, Text)-1
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Loop
End If
End Sub
 
---- 按F5執(zhí)行程序,單擊"輸入文本"按鈕,在彈出的對(duì)話框中輸入一些文本,確定后,剛剛輸入的文本將顯示在RichTextBox中;再單擊"選擇字符串"按鈕,在彈出的對(duì)話框中輸入你希望高亮顯示的字符串,確定后,RichTextBox中相應(yīng)的字符串將以紅色高亮顯示。
---- 八.編程實(shí)現(xiàn)Windows 95/98操作系統(tǒng)熱啟動(dòng)的方法

---- 要利用程序?qū)崿F(xiàn)系統(tǒng)的重新啟動(dòng),可以在你的程序中調(diào)用API函數(shù)來(lái)實(shí)現(xiàn)。建一個(gè)子函數(shù):(以VB為例)

Declare Function SystemParametersInfo Lib ″
user32″ Alias -
″SystemParametersInfo″ (ByVal uAction As Long,
ByVal uParam As Long,
ByVal lpvParam As Any, ByVal
fuWinIni As Long) As Long
Sub DisableCtrlAltDelete(bDisabled As Boolean)
Dim X As Long
X=SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
Call DisableCtrlAltDelete(true) ′禁止熱啟
Call DisableCtrlAltDelete(false) ′允許熱啟

---- 九.在Windows 95/ 98啟動(dòng)后自動(dòng)啟動(dòng)程序的方法
---- 我們都知道在Windows 95/98的"開(kāi)始"→"程序"選單下有一"啟動(dòng)"選單項(xiàng),當(dāng)每次啟動(dòng)Windows 95或Windows 98時(shí),系統(tǒng)都會(huì)自動(dòng)啟動(dòng)放在"啟動(dòng)"選單欄里的可執(zhí)行程序。

---- 但目前有好多軟件,像解霸五、ICQ,以及大部分實(shí)時(shí)偵測(cè)病毒的軟件等等,安裝后,并沒(méi)有放在"啟動(dòng)"選單里,也能在啟動(dòng)操作系統(tǒng)時(shí)自動(dòng)啟動(dòng)。怎么實(shí)現(xiàn)的呢?

---- 其實(shí)只要知道Windows注冊(cè)表的一些知識(shí),這個(gè)問(wèn)題就不能稱之為問(wèn)題了。用鼠標(biāo)單擊"開(kāi)始",打開(kāi)開(kāi)始選單,再單擊"運(yùn)行",出現(xiàn)一對(duì)話框,然后輸入"regedit",確定后,會(huì)打開(kāi)系統(tǒng)注冊(cè)表編輯器,找到HKEY-LOCAL-MACHINE? SOFTWARE?Microsoft?Windows?CurrentVersion?Run,加入你的程序的入口,就可以了。如果不知道怎么加,就參考一下已經(jīng)存在的鍵值。

---- 十. 如何把數(shù)據(jù)文件輸出到Text控件中?如果數(shù)據(jù)量比較大,窗體滿屏也不夠大,怎么解決?

---- 有一個(gè)比較簡(jiǎn)單的方法,就是把數(shù)據(jù)放到一個(gè)文本框(Text)里,并在其中加上水平和垂直滾動(dòng)條。具體實(shí)現(xiàn)步驟為:先在窗體(Form)里加入一個(gè)文本框,采用默認(rèn)名Text1;然后,設(shè)置文本框Text1的屬性:Text屬性設(shè)置為空,MultiLine屬性設(shè)置為True,ScrollBars屬性設(shè)置為3-Both;接著添加如下VB代碼:

Private Sub Form-Load()
Dim Handle As Integer
Dim FileName As String
On Error GoTo ErrExit
begin:
′輸入要顯示的數(shù)據(jù)文件的名稱
FileName=InputBox$(″Input Filename″,
″Open File″)
On Error GoTo FileErr
Handle=FreeFile
Open FileName For Input As #Handle
′把數(shù)據(jù)文件中的數(shù)據(jù)輸出到文本框中
Text1.Text=Input$(LOF(Handle), Handle)
Close #Handle
Exit Sub
FileErr:
Dim ErrNum As Integer
If Err.Number=53 Then
ErrNum=MsgBox(″File not exist″,
vbOKCancel, ″Error Information″)
If ErrNum=1 Then
GoTo begin
Else
Exit Sub
End If
End If
MsgBox Err.Description, , ″file open failed″
ErrExit:
Exit Sub
End Sub
′使文本框充滿整個(gè)窗體
Private Sub Form-Resize()
Text1.Left=0
Text1.Top=0
Text1.Width=Form1.Width-100
Text1.Height=Form1.Height-400
End Sub
---- 通過(guò)這樣的處理,不僅能解決問(wèn)題,而且用戶還可以在文本框中對(duì)數(shù)據(jù)進(jìn)行編輯。
---- 十一.關(guān)聯(lián)文件列表框、目錄列表框和驅(qū)動(dòng)器列表框的方法

---- 想做一個(gè)對(duì)話窗體,包含驅(qū)動(dòng)器列表框、目錄列表框和文件列表框,并能實(shí)現(xiàn)三者的同步操作,怎么做?這都是我們?cè)趯?shí)際應(yīng)用中經(jīng)常會(huì)遇到的問(wèn)題,在VB中解決這個(gè)問(wèn)題非常簡(jiǎn)單,可以通過(guò)Path屬性的改變引發(fā)Change事件來(lái)實(shí)現(xiàn)。例如:

Sub Dir1-Change()
File1.Path=Dir1.Path
End Sub

---- 該事件過(guò)程使窗體上的目錄列表框Dir1和文件列表框File1產(chǎn)生同步。因?yàn)槟夸浟斜砜騊ath屬性的改變將產(chǎn)生Change事件,所以在Dir1-Change事件過(guò)程中,把Dir1.Path賦給File1.Path,就可以產(chǎn)生同步效果。類似地,增加下面的事件過(guò)程,就可以使三種列表框同步操作:
Sub Drive1-Change()
Dir1.Path=Drive1.Drive
End Sub

---- 該過(guò)程使驅(qū)動(dòng)器列表框和目錄列表框同步,前面的過(guò)程使目錄列表框和文件列表框同步,從而使三種列表框同步,問(wèn)題即可解決。


支持(0中立(0反對(duì)(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

VB編程的必備技巧








簽名
主站蜘蛛池模板: 国产精品麻豆va在线播放 | 日本在线看片网站 | 国产乱人免费视频 | 麻豆免费在线视频 | 欧美日韩在线视频免费完整 | 成人免费视频观看无遮挡 | 国产v在线在线观看羞羞答答 | 国产精品美脚玉足在线 | 五月天六月婷婷 | 在线播放成人高清免费视频 | 国产一区二 | 国产三级在线观看播放 | 亚洲综合欧美色综合小说 | a级在线播放 | 国产精品视频网站你懂得 | 日韩亚洲精品不卡在线 | 澳门毛片精品一区二区三区 | 91成人午夜性a一级毛片 | 久久乐国产精品亚洲综合m3u8 | 国产高清国内精品福利99久久 | 国产精品一区二区三区四区 | 又大又紧又硬又湿a视频 | 色黄啪啪18周岁以下禁止观看 | 一级成人黄色片 | 男女做a一级视频免费观看 男女喷水视频 | 九九亚洲 | 波多野吉衣一区二区三区四区 | 麻豆国内精品欧美在线 | 日本欧美国产精品第一页久久 | 97视频免费公开成人福利 | 久久夜色精品国产尤物 | 欧美一级毛片在线看视频 | 中国帅小伙gaysextubevideo | 国产视频二 | 黄页视频在线观看免费 | 亚洲在线免费观看 | 免费看片在线 | 欧美 日韩 中字 国产 | 国产精品一区二区无线 | 国产99久久九九精品免费 | 久久国产精品亚洲综合 |