Visual Basic入门教程之四


  第四章 按钮(一)

  从本章开始我们将正式进入VB的编程世界,但这还仅仅是个开始,要编出 性能 壮大的软件,还要学众多东西,那就要看以后的VB高级教程了,我也得 奋力学啊!

  按钮是我们在Windows操作见到最多的控件,它们有着各种各样的 性能:“确认”、“ 取缔”、“下一步”等等,这些都是按钮的 体现,另外还有众多图形话的按钮,其实它们并没什么不同,所有的按钮都是通过单击(click)事件实现的,只是是在 表面不同罢了 。下面就让我们 构建一个最 方便的按钮,双击工具箱的CommandButton,将在窗体上 构建一个形如图4-1的按钮,它的缺省名(Name属性)为Command1,我们 可以把它改名为cmdExit,把Caption属性设为“退出”, 而后双击,按钮填写代码:

  PrivateSubcmdExit_Click()

UnloadMe

  EndSub

  按下F5或者工具条上的播放按钮,运行程序 。图4-2当你按下退出按钮的时候,就会自动退出程序,缘由是当你单击按钮时激活了它的Click事件,执行“UnloadMe”语句,使得窗体被卸载 。

  上面举了一个 比较 方便的例子,下面的例子略微复杂些:

  新建窗体,控件布局如图4-3所示,包括一个List控件,一个Text控件和两个按钮(Command1和Command2), ( 比较 方便的程序我们都采纳缺省名),对它们属性做如下 批改:

  List1

  Caption=“请输入你的名字”

  Text1

  Text=“”(空字符串)

  Button1

  Caption=“ 复原”

  Enabled=False

  Button2

  Caption=“ 革除”

  把 使用Button1的Enabled属性设为False(假),是使程序在初始时, 无奈单击Command1 。按F5,运行程序,图4-4, 复原按钮成为灰色,不可选 。

  固然现在程序还什么也不能做,下面我们在程序中增加代码:

首先在General里申明全局变量:

  DimStoreStringAsString'用来 储存字符串

  ※ 留神:为何用全局变量?

  VB里每一个小过程都相当于一个程序,程序里的变量称为 部分变量,是不得不在程序内部 使用的,而当程序调用 完毕后,由于从内存中被 革除,所以变量 储存的值也就消逝了,这里的全局变量是用来在过程中传递字符串 。

  接着填写以下代码:

  PrivateSubCommand1_Click()

  Text1.Text=StoreString

Command1.Enabled=False

  EndSub

  PrivateSubCommand2_Click()

  StoreString=Text1.Text

Text1.Text=""' 革除

  Command1.Enabled=True

  EndSub

  运行程序,如图4-5 。按下“ 革除”,文本框被 革除,按下“ 复原”,文本有被 复原,许多程序中的Undo/Redo便是利用这个原理实现的,现在晓得为何内存越多越好了吧 。

  我们在把程序 批改一下,把Button2删除,Button1的Enabled属性改为True,Caption改为“ 革除”,填写代码:

  PrivateSubCommand1_Click()

  IfCommand1.Caption=" 革除"Then

  StoreString=Text1.Text

Text1.Text=""' 革除

  Command1.Caption=" 复原"

  Else

  Text1.Text=StoreString

  Command1.Caption=" 革除"

  EndIf

  EndSub

  同样 可以上面的 性能,然而却少用了一个控件,控件 使用少的程序启动会快些 。

  下面的例子要更加复杂些,大家 定然都用过Windows附件中的计算器,它是一个 标准的科学计算器,利用VB我们也 可以做到,只是没有那么复杂,四则运算而已 。

  先 构建一个新的 名目文件,里面包括一个Form1的窗体 。 而后,增加控件,包括一个Text框(Text1),和17个按钮,这17个按钮 使用的名称都是Command1,只是Index属性不同,就好象一个数组, 缔造一组按钮的 步骤是,先在窗体上 构建一个按钮(Command1), 而后在Command1上击鼠标右键, 取舍复制(Copy), 而后在窗体上任意部位击右键, 取舍粘贴(Paste),系统会 揭示是不是 缔造控件组, 取舍“是”, 反复上面步骤,直至 缔造17个按钮为止 。各控件属性如下表:

  Text1

  BackColor=&H00C0FFFF&

  Text=“0.”

  Command1

  Index0DD16

  Index0DD9Caption=“0”-“9”

  Index10Caption=“.”

  Index11Caption=“=”

  Index12Caption=“ ”

  Index13Caption=“-”

  Index14Caption=“×”

  Index15Caption=“÷”

  Index16Caption=“ 革除”

  假如想转变一些 其余的属性, 比方字体, 可以自己定义一下Font属性,假如 绝对多个控件的一起属性进行转变, 可以在窗体上按下鼠标,拖动,把多个控件一起选定, 而后对它们的一起属性进行 批改 。

  别看这个东西小,还费了近我两个小时呢,不觉大叹手生,里面也有些地方很绕弯子,我尽量解释清晰 。

  在编写程序之前,我们先来回忆一下计算器的 使用 。

  按下数字键在液晶屏上会浮现数字,这是最 根本的 性能 。

  第一次按下运算键,再按下数字键,将再一次输入第二个数字,再次按下运算键,将算出前两个数的 后果, 而后按下数字键,将又再一次输入新的数字 。

  输入数字后,按下“等于键”将仍输出原来的数字,输入运算符和第二个数字后在按下“等于”,将得到二者的 后果 。 而后又 反复第二、三步 。

  按下“ 革除”,数据被所有 革除 。

  了解了这些,我们一步一步实现 。

  先实现数据的输入,请看代码 。

  与未 缔造组的控件相比,它的事件里多了Index参数,组里所有的对象都 使用同一个事件 。

  先在General里申明窗体级全局变量:

  DimNum1,Num2AsSingle

  DimStrNum1,StrNum2AsString

  DimFirstNumAsBoolean'推断是不是是数字开头

  由于Text1里是 存放字符串的,所以要把输入的数据进行运算,必须把字符型变量转变为实型变量,分别用Num1、Num2和StrNum1、StrNum2进行 存放 。

  在Form_Load事件里给变量初赋值:

  Num1=0

  Num2=0

  StrNum1=""

  StrNum2=""

  FirstNum=True

  由于17个按钮 使用的是同一事件,所以我们用一个SelectCase语句 划分各个按钮,双击任意按钮输入代码:

  PrivateSubCommand1_Click(IndexAsInteger)

  SelectCaseIndex

  Case0To9

  IfFirstNumThen

  StrNum1=Str(Index)’实型转字符型

  FirstNum=False’初赋值为假

  Else’非初赋值

  StrNum1=StrNum1 Str(Index)

  EndIf

  Text1.Text=StrNum1’显示

  <还有 其余语句,期待插入>

  EndSelect

  EndSub