用VB编写“红绿灯”程序

Author: 伟子 Date: 2000年 第46期

  平时我们在过马路的时候常常会看到指挥交通的红绿灯,它的权利可大了,要是我们可以控制它就好了,虽然在现实生活中办不到,就让我们编写一个虚拟的红绿灯程序,也来过过控制红绿灯的瘾。
  下面我们就开始编写吧。
  第一件事当然是新建一个工程,然后引入所需控件。在“红绿灯”程序中,我们需要用到的控件有:OptionButton(选项按钮)、Image(图像框)及Timer(时钟)控件。引入两个OptionButton,其中Option1的Caption设置为“红灯”,Option2的Caption设置为“绿灯”;Image1的Picture属性设置为红灯图片,选择一张红灯图片(读者可以自己创建一个红灯及绿灯图片)。设计好的程序界面如^46020401a^1。
  好了,现在我们开始添加程序代码。
  我们要求程序能够通过我们所选择的是红灯或绿灯来显示相应的图像,实现的原理就是当我们单击“红灯”时显示红灯图片,单击“绿灯”时显示绿灯图片,只要用户准备好这两张图片后,要实现这个功能就非常的容易了。其具体的程序代码如下:
  双击Option1(即红灯)控件,添加如下代码:(黑体部分为系统自动生成的代码,下同)
  Private Sub Option1_Click()
  ′显示红灯图片
  On Error GoTo LoadErr ′当载入图片发生错误时跳到LoadErr处
  If Option1.Value=True Then ′当单击了Option1控件时
  Image1.Picture=LoadPicture(″C:\Windows\Desktop\red.jpg″) ′载入red.jpg图片,并显示在Image1控件中。
  End If
  LoadErr: ′设置捕获错误标签
  If Err.Number=53 Then ′当发生错误时
   MsgBox Err.Description,vbOKOnly+vbCritical,″错误″ ′显示错误信息
  End If
  End Sub
  上面一段代码中有一句“On Error Goto LoadErr”,该句是用作捕获程序错误的,当程序执行过程中发生了错误则跳到处理错误语句处执行。在这段代码中,如果在载入图片时发生了错误(通常是所要载入的文件不存在或路径错误)则跳到LoadErr处执行LoadErr后的程序代码。
  在VB中,所有的程序错误都是用数字表示的,如53则表示未找到文件的错误码,其实要知道哪个错误码表示哪种错误也并不难,当你在VB中运行这个程序时,如果出现了错误,会有一个错误的提示框,在该提示框中则有该错误的错误码。如果我们没有在该段程序中加入“On Error Goto LoadErr”语句及给出错误的文件名或文件路径的话,则会出现如^46020401b^2所示的提示框。
  LoadPicture是载入图片的函数,其中第一个参数则是所要载入图片的完整路径,当然在本例中这个路径是固定了的,所要想使其路径随程序路径的变化而变化则需要使用App.Path值,可以写成Image1.Picture=LoadPicture(App.Path&″\red.jpg″),其中App.Path返回的值则是程序所在的路径,当然red.jpg必须放在程序所在的同一目录中。
  双击Option2(即绿灯)控件,添加如下代码:
  Private Sub Option2_Click()
  ′显示绿灯图片
  On Error GoTo LoadErr ′当载入图片发生错误时跳到LoadErr处
  If Option2.Value=True Then ′当单击了Option2控件时
  Image1.Picture=LoadPicture(″C:\Windows\Desktop\green.jpg″) ′载入green.jpg图片,并显示在Image1控件中。
  End If
  LoadErr: ′设置标签
  If Err.Number=53 Then ′当发生错误时
   MsgBox Err.Description,vbOKOnly+vbCritical,″错误″ ′显示错误信息
  End If
  End Sub
  OK!现在我们就可以单击F5键运行一下,看看我们自制的“红绿灯”程序吧。点击一下“绿灯”看看,红灯变成绿灯了吧?再试试红灯,怎样?现在我们就可以控制红绿灯了吧。
  如何才能让“红绿灯”自动更换呢?要实现这个功能也非常简单,只要加入Timer(时钟)控件,将Timer1的Interval设置为3000(即3秒)。其原理就是每隔3秒更换一种图片,这样便实现了自动更换。
  双击Timer1控件,添加如下代码:
  Private Sub Timer1_Timer()
  ′实现自动化
  If Option1.Value=True Then ′如果当前显示的是红灯
   Option2.Value=True ′使Option2被选中,执行Option2中的代码(即显示绿灯)
  Else
   Option1.Value=True ′使Option1被选中,执行Option1中的代码(即显示红灯)
  End If
  End Sub
  单击F5键运行一下,每隔3秒钟即换一种颜色显示。就这么几句代码就实现了自动化,简单吧?
  如果你有什么疑问,欢迎写信与我交流,我的E-mail是:vber@21cn.com。