通过Visual Basic编程实现多种按钮效果

时间:2022-06-21 05:01:11

通过Visual Basic编程实现多种按钮效果

摘 要:命令按钮是用户与计算机应用程序进行交互的最简便的方法。面向对象编程语言Visual Basic中的按钮控件就是命令按钮,命令按钮是应用程序中最为常用的控件,但是Visual Basic中的按钮控件过于简单,不够美观,支持的事件少。为实现多彩多姿命令按钮,可以利用图像框装载漂亮的图片模拟命令按钮,通过事件过程实现“命令按钮”的多种特殊效果,包括按钮的默认效果、鼠标划过时按钮的效果、鼠标单击时按钮的效果,按击回车键或逃逸键时按钮的效果。在实际编程中,设计好具有多种效果的按钮,是能否赢得用户的一件法宝。

关键词:按钮;图像框;属性;事件;事件代码;事件过程

中图分类号: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 引 言

在进行程序设计时,经常需要设计一些形象的、生动的、漂亮的按钮,更重要的是按钮在操作上有动态的效果。按钮通常的状态有默认状态、鼠标划过时的状态、鼠标单击时的状态、按ESC键时的状态、按Enter键时的状态。

如何实现多种效果的命令按钮,通过Visual Basic编程有各种实现办法,但如果直接在窗体上创建命令按钮对象,要实现多种按钮效果并不容易。例如,Visual Basic提供的命令按钮外观是一个矩形,若要实现立体圆柱状的按钮,则不容易。在实际编程中,总结经验,发现使用图像框去实现按钮更为自如,更为顺手,各种按钮效果易于实现。

2 对象准备

2.1 图像按钮的准备

预先用图形处理软件(如Photoshop)制作所需求的图像按钮文件。本文中制作4个图形文件,分别命名为“P1.JPG”,“P2.JPG”,“P3.JPG”,“P4.JPG”,每个图形的尺寸大小一致,外观均呈圆柱立体状。图形“P1.JPG”中显示黑暗颜色文字“退出系统”;图形“P2.JPG”中显示明亮颜色文字;图形“3.JPG”中显示黑暗颜色文字“开始登录”;图形“P4.JPG”中显示明亮颜色文字“开始登录”。

一个系统经常具有“退出系统”和“开始登录”这2个按钮。用“P1.JPG”和“P2.JPG”两个图片实现“退出系统”这个按钮;用“P3.JPG”和“P4.JPG”两个图片实现“退出系统”这个按钮,不同的颜色表示不同的状态。

2.2 图像框的准备

窗体是Visual Basic中的对象,在设计程序时,窗体是程序员的“工作台”,窗体好像一块“画布”,在窗体上可以建立其他控件对象,程序运行后,每个窗体对应一个窗口。

在窗体画出4个图像框,名称分别为“Image1”,“Image2”,“Image3”,“Image4”。图像框“Image1”装入图形“P1.JPG”(黑暗颜色文字“退出系统”),图像框“Image2”装入图形“P2.JPG”(明亮颜色文字“退出系统”),图像框“Image3”装入图形“P3.JPG”(黑暗颜色文字“开始登录”),图像框“Image4”装入图形“P4.JPG”(明亮颜色文字“开始登录”)。

设定图像框的尺寸为统一大小。首先把图片框Stretch属性为True,以实现当图像框大小改变时,其中的图片随之会自动改变大小以适应图像框的空间大小。接下来通过图像框Height和Width属性去改变图像框的高度和宽度,把4个图像框的属性设为统一的属性值,从而实现图像框的尺寸为一样的大小。

设定图像框的合理位置。在垂直方向上,若要求4个图像框处在同样的高度上,可以通过设置Top属性实现,也可以通过菜单命令实现(首先选择4个图像框对象,然后选择“格式”菜单,再选择“对齐”项中的“顶端对齐”命令项);在水平方向上,图像框“Image1”和“Image2”处于同一位置上,一个在前,一个在后,图像框“Image3”和“Image4”处于同一位置上,也是一个在前,一个在后,可以通过设置Left属性实现,也可以通过菜单命令实现(首先选择同一位置上的2个图像框对象,然后选择“格式”菜单,再选择“对齐”项中的“左对齐”命令项)。

3 用事件过程实现多种按钮效果

3.1 按钮的默认状态

通常,对于“退出系统”和“开始登录”这样的两个按钮,“开始登录”一般为事实上的下一步操作。所以不妨把图片框“Image1”可见性设为真,把图片框“Image2”可见性设为假,即可以看见黑暗颜色文字“退出系统”按钮;把图片框“Image3”可见性设为假,把图片框“Image4”可见性设为真,即可以看见明亮颜色文字“开始登录”按钮。

默认状态是在窗体运行时,一开始就需要具有的状态。对于Visual Basic而言,窗体的Load事件在窗体加载就会触发的其中的事件代码,所以可以在窗体的Load事件中编写事件代码,实现按钮初始默认状态。

实现“按钮”默认状态的Load事件过程为:

Private Sub Form_Load()

Image1.Visible = True

Image2.Visible = False

Image3.Visible = False

Image4.Visible = True

End Sub

3.2 鼠标划过时按钮的状态

当鼠标光标移入“退出系统”按钮所在的区域时,“退出系统”按钮中的文字改变为明亮颜色,“开始登录”按钮中的文字改变为黑暗颜色;而当鼠标光标移入“开始登录”按钮所在的区域时,“开始登录”按钮中的文字改变为明亮颜色,“退出系统”按钮中的文字改变为黑暗颜色。这种明暗交替的醒目设计,极具艺术性。通过交替改变各个对像框Visual属性,就可以实现鼠标划过“按钮”(实际上对象是图像框)时的状态。

图像框支持移动鼠标光标的移动事件过程,即支持MouseMove事件,该事件并不需要鼠标的按键,只需要把鼠标光标移到图像框后,便可以触发MouseMove事件。

实现“退出系统”按钮变明,“开始登录”按钮变暗的事件过程为:

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

实现“开始登录”按钮变明,“退出系统”按钮变暗的事件过程为:

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 鼠标单击时按钮的状态

鼠标单击按钮后,往往实现某一过程的调用,但在里,将讨论按钮被按单击时, “压下”效果的实现,以及松开鼠标按键时按钮“弹上”效果的实现。下面就以按钮“开始登录”为例说明效果实现的原理机制。

移动鼠标光标到图像框“Image4” (明亮颜色文字“开始登录”)上,如果压下鼠标按钮则产生MouseDown事件;如果松开鼠标按钮则产生MouseUp事件。

接下来关键的问题是如何实现“压下”效果和“弹上”效果。可以通过改变图像框在窗体中位置的方法实现预期的效果,当压下鼠标按钮时,给图像框的Top增加100twip,当松开鼠标按钮时,给图像框的属性Top减少100twip。通过这种改变图像框Top属性值方法,“按钮”将来就可以按动。

用于实现“开始登录”单击的事件过程为:

Private Sub Image4_Click()

′ 调用“开始登录”代码

End Sub

用于实现“压下”效果的事件过程为:

Private Sub Image4_MouseDown (Button As Integer,Shift As Integer,x As Single,y As Single)

Image4.Top = Image4.Top + 100

End Sub

用于实现“弹上”效果的事件过程为:

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键退出系统,按Enter键开始登录为例进行分析讨论。

按下键盘上某个键时,将发生KeyPress事件。严格的说,当按下某个键时,所触发的是拥有输入焦点(Focus)的那个控件的KeyPress事件。在某一时刻,输入焦点只能位于某一个控件上。如果窗体上没有活动的或可见的控件,则输入焦点位于窗体上。当一个控件或窗体拥有输入焦点,该控件或窗体将接收从键盘上输入的信息。

在默认情况下,控件的键盘事件优于窗体的键盘事件。因此在发生键盘时,总是先激活控件的键盘事件。如果希望窗体先接收键盘事件,则必须把窗体的KeyPreview属性设为True,否则不能激活键盘事件。

这里,在任何情况下,都要实现按Esc键退出系统,按Enter键开始登录,所以必须把窗体的KeyPreview属性设为True。另外,在编写事件代码时,需要注意参数KeyAscii是一个预定义的变量,执行KeyPress事件过程时,KeyAscii是所按键的ASCII值。已知Esc键的ASCII值为27,Enter键的ASCII值为13,那么,就可以通过KeyAscii的值是否为27或13做出相应的判断。

实现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事件,综合构建,从而实现具有多种效果的界面按钮。

设计具有多种效果的按钮,是实现友好界面的重要环节,是能否赢取用户的一门法宝,在实际编程中,应该根据用户需求,设计好具有多种效果的按钮。

参考文献

[1]刘炳文.Visual Basic程序设计[M].2版.北京:清华大学出版社,2003.

[2]吴绍根,陈建潮.Visual Basic程序设计基础[M].北京:人民邮电出版社,2006.

[3]\[美\]Diane Zak.Visual Basic 6.0程序设计[M].北京:电子工业出版社,2007.

[4]\[美\]布兰德妮,\[美\]米尔斯博格大学教程[M].北京:清华大学出版社,2004.

作者简介 杨战海 男,1972年出生,陕西泾阳人,讲师,硕士研究生。研究方向为计算机算法、数据库技术。

薛宁静 女,1978年出生,讲师。研究方向为计算机网络。

上一篇:如何改善与提高线切割加工的精度和表面质量 下一篇:以太网与现场总线技术的比较