对象就是某一类中的一个具体特例。例如,人类作为一类,具有共同的特征:直立行走、姓名、性别、身高、体重、皮肤颜色等。但是有些特征值,如果不具体到某个人则是不能确定的,例如,人类的身高、体重,只能说出一个范围。而当具体到一个人“张三”时,那么他的身高、体重就有具体的描述了,“张三”就称为这个类中的一个对象。相同道理,每个人都是这个类中的一个对象。
Visual Basic程序设计之所以称为面向对象程序设计,就是因为引入了类和对象的概念。在Visual Basic中,哪些是类呢?其实,工具箱中的各种工具就是不同的类。例如,工具箱中的“按钮”,可以称为“按钮”类,当然这个类也是开发Visual Basic系统的开发人员所编写的,它里面包含了很多的代码,然后通过封装技术将代码封装,呈现出来的就是图形按钮的样子。程序员只管拿过来用就可以了,极大程度简化了工作,让程序员把精力集中在如何用这些工具去为用户开发好的应用软件上。
使用工具箱设计窗体时,首先选择工具箱中的“按钮”,然后在窗体上画出一个按钮,这实际上是创建了一个按钮对象,因为这个按钮有具体的高度、宽度等特征值,这就是Visual Basic中提到的对象,一般称为“控件”。
1.属性
任何对象都有它的特征,这些特征称为属性。例如,用户可以在窗体上创建多个按钮,每个按钮都可以有自己的高度、宽度、在窗体中的位置、不同的标题等。
不同类的对象也可以有相同的属性,例如,按钮和文本框都有高度、宽度属性。在学习时,不用记住每个对象有哪些属性,应该学会举一反三,这样只需要记住最常用的属性即可。通过了解这些属性的使用,掌握一种方法,其他属性甚至其他对象都可以自己研究学习。
(1)设置对象属性
创建对象后,设置对象的属性有以下两种方法。
1)可以通过属性窗口设置对象的各种属性,这种方法称为静态设置。采用这种方法设置完毕后,一般在窗体设计器中就能看到设置后的效果。例如,如果把文本框的Text属性值清空,则在窗体设计器中文本框的内容就变为空了。
2)通过代码窗口设置对象的属性。例如,要清空窗体上文本框的内容,可以在代码窗口中的Form_Load()事件中写入以下代码。
这种方法在程序运行前,文本框的内容是不清空的,只有程序运行后,执行Form_Load()事件,这时才会清空文本框的内容。当然,对于用户来说,效果是一样的。
(2)代码窗口中对象属性的使用
引用对象属性的格式如下。
点“.”为半角符号。
例如:Text1.Text。
当在代码窗口输入“Text1.”后,系统会自动弹出一个自动输入列表,其中列出该对象的所有属性和方法,如图1-23所示。
图1-23 属性的输入(www.xing528.com)
在输入“Text1.”之后,如果没有出现自动输入列表,就说明“Text1”不存在,在窗体上没有名称为“Text1”的对象,这时需要回到窗体设计器中检查该文本框是否存在,或者名称是否为“Text1”。自动输入列表出现后,当输入某个属性时,不用记住属性的全部名称,只需要记住属性名的前几个字母即可。因为当输入第一个字母后,自动输入列表会自动定位到以该字母为首的属性,接着输入第二个字母,它会再次定位到前两个字母相同的属性,如果默认选中的那个属性是要输入的属性,这时只需要按下空格键,即可完成该属性的输入。这样既不会出错,又提高了输入速度。尽量不要用鼠标去查找,这会影响输入的正确性和速度。
2.事件
前面提到,Visual Basic是事件驱动编程语言,那么什么是事件?可以理解为:事件即状态变化。
回想一下现实生活中的事件,因为状态发生变化,没有维持原来的状态,所以就有事件发生。那么在操作计算机的过程中,计算机时刻都在发生着状态变化,移动鼠标、敲击键盘都会产生状态变化,即使不操作鼠标、键盘,也会产生状态变化,因为系统时间发生变化,这也意味着状态变化,就会有事件发生。
在Visual Basic中,当用户在运行的窗体上按下某个按钮后,按钮的状态发生了变化,就触发了按钮的Click事件;当用户的鼠标在窗体上滑过时,则触发窗体的MouseMove事件等。不同的对象都有自己的事件,当然,不同的对象也可以有相同的事件,例如按钮也有MouseMove事件,窗体也有Click事件。相同的对象具备相同的事件。
事件名的语法格式如下。
什么样的对象具有什么样的事件,包括事件名的写法,都是由开发Visual Basic语言工具的开发人员规定好的。作为使用工具的人,只能接受它们的名字和写法,不能修改。
所以,开发程序实际上就是根据程序功能在窗体上选择创建合适的对象,然后再选择合适的事件对其编写代码,以对用户操作做出正确的反应,完成相应的功能,并不需要对所有对象的所有事件都编写代码。
例如,窗体上有3个按钮,名称分别为:Command1、Command2、Command3,如图1-24所示。
图1-24 事件驱动举例
程序运行后,如果单击Command1,则在窗体上输出10,每次单击输出一次。Command2事件中也有输出,每次单击输出一次20,但是如果永远不单击Command2,则Command2中的代码永远得不到执行,因为它的Click事件没有被触发,则20永远不会输出。至于Command3,不论用户单击还是不单击都是没有效果的,因为它的Click事件中没有代码设置输出结果,即使触发了它的Click事件,它也不会有任何结果输出。
所以编写代码前一定要弄清楚,要在哪个对象的哪个事件中编写代码。如果代码放到了错误的对象中,程序就不会完成指定功能。
3.方法
方法与事件不同,事件一般由用户触发(当然也有由时间触发、程序中触发的)来驱动程序运行。而方法是指对象具有哪些可执行的功能。就像一个人一样,他会跑、会跳,这是他具备的能力,但是如果不让他跑、跳,他的能力就不会得到发挥。程序中对象的方法等同于此,这个对象有一个方法,能够完成某种操作,但是需要程序员在代码中使用它,它才会得以执行,并实现相应功能。如果不使用它,该对象的这个方法就不会得以执行,更不会完成它要实现的功能。这就是后面将要讲到的方法的调用。
例如,CommonDialog1对象能够显示“颜色”对话框,但是如果不采用合适的代码调用它,它就不会显示“颜色”对话框。只有在代码中写入对它的调用,它才会执行,如图1-25所示。这里可以看到,对象的方法、属性的图标是不一样的。方法的图标是,而属性的图标是,通过图标就可以区分哪些是方法,哪些是属性。
图1-25 方法的输入
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。