摘 要:命令按鈕是用戶與計算機應用程序進行交互的最簡便的方法。面向對象編程語言Visual Basic中的按鈕控件就是命令按鈕,命令按鈕是應用程序中最為常用的控件,但是Visual Basic中的按鈕控件過于簡單,不夠美觀,支持的事件少。為實現(xiàn)多彩多姿命令按鈕,可以利用圖像框裝載漂亮的圖片模擬命令按鈕,通過事件過程實現(xiàn)“命令按鈕”的多種特殊效果,包括按鈕的默認效果、鼠標劃過時按鈕的效果、鼠標單擊時按鈕的效果,按擊回車鍵或逃逸鍵時按鈕的效果。在實際編程中,設計好具有多種效果的按鈕,是能否贏得用戶的一件法寶。
關鍵詞:按鈕;圖像框;屬性;事件;事件代碼;事件過程
中圖分類號:TP311 文獻標識碼:B
文章編號:1004-373X(2008)06-114-03
Various Button Effects by Visual Basic Programming
YANG Zhanhai,XUE Ningjing
(Computer Center,Yan′an University,Yan′an,716000,China)
Abstract:Order button is a consumer and the computer application carries out interactive simple and convenient method.The button control in object-oriented programming language Visual Basic is order button,order button is to be control in common use most in application,button control in Visual Basic is excessively simple,the event being not enough beautiful,hold out is few.Be to realize colorful order button,making use of the image frame to load the beautiful photograph to simulate order button,the button effect,pushes down the effect striking the carriage return key or the escape key time button by the fact that event process realizes various peculiar \"order button\" effect,when button effect,mouse are labeled with Shan strike when effect,the mouse bid streak including the button tacitly approving that.
Keywords:button;image frame;attribute;event;event code;event process
1 引 言
在進行程序設計時,經(jīng)常需要設計一些形象的、生動的、漂亮的按鈕,更重要的是按鈕在操作上有動態(tài)的效果。按鈕通常的狀態(tài)有默認狀態(tài)、鼠標劃過時的狀態(tài)、鼠標單擊時的狀態(tài)、按ESC鍵時的狀態(tài)、按Enter鍵時的狀態(tài)。
如何實現(xiàn)多種效果的命令按鈕,通過Visual Basic編程有各種實現(xiàn)辦法,但如果直接在窗體上創(chuàng)建命令按鈕對象,要實現(xiàn)多種按鈕效果并不容易。例如,Visual Basic提供的命令按鈕外觀是一個矩形,若要實現(xiàn)立體圓柱狀的按鈕,則不容易。在實際編程中,總結經(jīng)驗,發(fā)現(xiàn)使用圖像框去實現(xiàn)按鈕更為自如,更為順手,各種按鈕效果易于實現(xiàn)。
2 對象準備
2.1 圖像按鈕的準備
預先用圖形處理軟件(如Photoshop)制作所需求的圖像按鈕文件。本文中制作4個圖形文件,分別命名為“P1.JPG”,“P2.JPG”,“P3.JPG”,“P4.JPG”,每個圖形的尺寸大小一致,外觀均呈圓柱立體狀。圖形“P1.JPG”中顯示黑暗顏色文字“退出系統(tǒng)”;圖形“P2.JPG”中顯示明亮顏色文字;圖形“3.JPG”中顯示黑暗顏色文字“開始登錄”;圖形“P4.JPG”中顯示明亮顏色文字“開始登錄”。
一個系統(tǒng)經(jīng)常具有“退出系統(tǒng)”和“開始登錄”這2個按鈕。用“P1.JPG”和“P2.JPG”兩個圖片實現(xiàn)“退出系統(tǒng)”這個按鈕;用“P3.JPG”和“P4.JPG”兩個圖片實現(xiàn)“退出系統(tǒng)”這個按鈕,不同的顏色表示不同的狀態(tài)。
2.2 圖像框的準備
窗體是Visual Basic中的對象,在設計程序時,窗體是程序員的“工作臺”,窗體好像一塊“畫布”,在窗體上可以建立其他控件對象,程序運行后,每個窗體對應一個窗口。
在窗體畫出4個圖像框,名稱分別為“Image1”,“Image2”,“Image3”,“Image4”。圖像框“Image1”裝入圖形“P1.JPG”(黑暗顏色文字“退出系統(tǒng)”),圖像框“Image2”裝入圖形“P2.JPG”(明亮顏色文字“退出系統(tǒng)”),圖像框“Image3”裝入圖形“P3.JPG”(黑暗顏色文字“開始登錄”),圖像框“Image4”裝入圖形“P4.JPG”(明亮顏色文字“開始登錄”)。
設定圖像框的尺寸為統(tǒng)一大小。首先把圖片框Stretch屬性為True,以實現(xiàn)當圖像框大小改變時,其中的圖片隨之會自動改變大小以適應圖像框的空間大小。接下來通過圖像框Height和Width屬性去改變圖像框的高度和寬度,把4個圖像框的屬性設為統(tǒng)一的屬性值,從而實現(xiàn)圖像框的尺寸為一樣的大小。
設定圖像框的合理位置。在垂直方向上,若要求4個圖像框處在同樣的高度上,可以通過設置Top屬性實現(xiàn),也可以通過菜單命令實現(xiàn)(首先選擇4個圖像框對象,然后選擇“格式”菜單,再選擇“對齊”項中的“頂端對齊”命令項);在水平方向上,圖像框“Image1”和“Image2”處于同一位置上,一個在前,一個在后,圖像框“Image3”和“Image4”處于同一位置上,也是一個在前,一個在后,可以通過設置Left屬性實現(xiàn),也可以通過菜單命令實現(xiàn)(首先選擇同一位置上的2個圖像框對象,然后選擇“格式”菜單,再選擇“對齊”項中的“左對齊”命令項)。
3 用事件過程實現(xiàn)多種按鈕效果
3.1 按鈕的默認狀態(tài)
通常,對于“退出系統(tǒng)”和“開始登錄”這樣的兩個按鈕,“開始登錄”一般為事實上的下一步操作。所以不妨把圖片框“Image1”可見性設為真,把圖片框“Image2”可見性設為假,即可以看見黑暗顏色文字“退出系統(tǒng)”按鈕;把圖片框“Image3”可見性設為假,把圖片框“Image4”可見性設為真,即可以看見明亮顏色文字“開始登錄”按鈕。
默認狀態(tài)是在窗體運行時,一開始就需要具有的狀態(tài)。對于Visual Basic而言,窗體的Load事件在窗體加載就會觸發(fā)的其中的事件代碼,所以可以在窗體的Load事件中編寫事件代碼,實現(xiàn)按鈕初始默認狀態(tài)。
實現(xiàn)“按鈕”默認狀態(tài)的Load事件過程為:
Private Sub Form_Load()
Image1.Visible = True
Image2.Visible = False
Image3.Visible = False
Image4.Visible = True
End Sub
3.2 鼠標劃過時按鈕的狀態(tài)
當鼠標光標移入“退出系統(tǒng)”按鈕所在的區(qū)域時,“退出系統(tǒng)”按鈕中的文字改變?yōu)槊髁令伾?,“開始登錄”按鈕中的文字改變?yōu)楹诎殿伾欢斒髽斯鈽艘迫搿伴_始登錄”按鈕所在的區(qū)域時,“開始登錄”按鈕中的文字改變?yōu)槊髁令伾?,“退出系統(tǒng)”按鈕中的文字改變?yōu)楹诎殿伾?。這種明暗交替的醒目設計,極具藝術性。通過交替改變各個對像框Visual屬性,就可以實現(xiàn)鼠標劃過“按鈕”(實際上對象是圖像框)時的狀態(tài)。
圖像框支持移動鼠標光標的移動事件過程,即支持MouseMove事件,該事件并不需要鼠標的按鍵,只需要把鼠標光標移到圖像框后,便可以觸發(fā)MouseMove事件。
實現(xiàn)“退出系統(tǒng)”按鈕變明,“開始登錄”按鈕變暗的事件過程為:
Private Sub Image1_MouseMove(Button As Integer,Shift As Integer,x As Single,y As Single)
Image1.Visible = False
Image2.Visible = True
Image3.Visible = True
Image4.Visible = False
End Sub
實現(xiàn)“開始登錄”按鈕變明,“退出系統(tǒng)”按鈕變暗的事件過程為:
Private Sub Image3_MouseMove(Button As Integer,Shift As Integer,x As Single,y As Single)
Image1.Visible = True
Image2.Visible = False
Image3.Visible = False
Image4.Visible = True
End Sub
3.3 鼠標單擊時按鈕的狀態(tài)
鼠標單擊按鈕后,往往實現(xiàn)某一過程的調用,但在里,將討論按鈕被按單擊時, “壓下”效果的實現(xiàn),以及松開鼠標按鍵時按鈕“彈上”效果的實現(xiàn)。下面就以按鈕“開始登錄”為例說明效果實現(xiàn)的原理機制。
移動鼠標光標到圖像框“Image4” (明亮顏色文字“開始登錄”)上,如果壓下鼠標按鈕則產(chǎn)生MouseDown事件;如果松開鼠標按鈕則產(chǎn)生MouseUp事件。
接下來關鍵的問題是如何實現(xiàn)“壓下”效果和“彈上”效果??梢酝ㄟ^改變圖像框在窗體中位置的方法實現(xiàn)預期的效果,當壓下鼠標按鈕時,給圖像框的Top增加100twip,當松開鼠標按鈕時,給圖像框的屬性Top減少100twip。通過這種改變圖像框Top屬性值方法,“按鈕”將來就可以按動。
用于實現(xiàn)“開始登錄”單擊的事件過程為:
Private Sub Image4_Click()
′ 調用“開始登錄”代碼
End Sub
用于實現(xiàn)“壓下”效果的事件過程為:
Private Sub Image4_MouseDown (Button As Integer,Shift As Integer,x As Single,y As Single)
Image4.Top = Image4.Top + 100
End Sub
用于實現(xiàn)“彈上”效果的事件過程為:
Private Sub Image4_MouseUp (Button As Integer,Shift As Integer,x As Single,y As Single)
Image4.Top = Image4.Top - 100
End Sub
3.4 按Esc鍵和Enter鍵時按鈕的反應
一個良好的窗體界面,其上的按鈕不僅可以用鼠標來選擇操作,也可以支持鍵盤的操作。下面,就以按Esc鍵退出系統(tǒng),按Enter鍵開始登錄為例進行分析討論。
按下鍵盤上某個鍵時,將發(fā)生KeyPress事件。嚴格的說,當按下某個鍵時,所觸發(fā)的是擁有輸入焦點(Focus)的那個控件的KeyPress事件。在某一時刻,輸入焦點只能位于某一個控件上。如果窗體上沒有活動的或可見的控件,則輸入焦點位于窗體上。當一個控件或窗體擁有輸入焦點,該控件或窗體將接收從鍵盤上輸入的信息。
在默認情況下,控件的鍵盤事件優(yōu)于窗體的鍵盤事件。因此在發(fā)生鍵盤時,總是先激活控件的鍵盤事件。如果希望窗體先接收鍵盤事件,則必須把窗體的KeyPreview屬性設為True,否則不能激活鍵盤事件。
這里,在任何情況下,都要實現(xiàn)按Esc鍵退出系統(tǒng),按Enter鍵開始登錄,所以必須把窗體的KeyPreview屬性設為True。另外,在編寫事件代碼時,需要注意參數(shù)KeyAscii是一個預定義的變量,執(zhí)行KeyPress事件過程時,KeyAscii是所按鍵的ASCII值。已知Esc鍵的ASCII值為27,Enter鍵的ASCII值為13,那么,就可以通過KeyAscii的值是否為27或13做出相應的判斷。
實現(xiàn)Esc鍵和Enter鍵按鈕的反應的KeyPress事件過程如下:
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call Image4_Click
End If
If KeyAscii = 27 Then
Call Image1_Click
End If
End Sub
4 結 語
使用Visual Basic這一面向對象編程語言,編寫程序界面時,充分利用對象的Load,Click,MouseDown,MouseUp以及KeyPress事件,綜合構建,從而實現(xiàn)具有多種效果的界面按鈕。
設計具有多種效果的按鈕,是實現(xiàn)友好界面的重要環(huán)節(jié),是能否贏取用戶的一門法寶,在實際編程中,應該根據(jù)用戶需求,設計好具有多種效果的按鈕。
參考文獻
[1]劉炳文.Visual Basic程序設計[M].2版.北京:清華大學出版社,2003.
[2]吳紹根,陳建潮.Visual Basic程序設計基礎[M].北京:人民郵電出版社,2006.
[3]\\[美\\]Diane Zak.Visual Basic 6.0程序設計[M].北京:電子工業(yè)出版社,2007.
[4]\\[美\\]布蘭德妮,\\[美\\]米爾斯博格.VB.NET大學教程[M].北京:清華大學出版社,2004.
作者簡介 楊戰(zhàn)海 男,1972年出生,陜西涇陽人,講師,碩士研究生。研究方向為計算機算法、數(shù)據(jù)庫技術。
薛寧靜 女,1978年出生,講師。研究方向為計算機網(wǎng)絡。