背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3349.html    注册17xie 一起来写书 实现您的出书梦想!

2.2.10  Timer控件

VB提供了一种叫定时器(Timer)的控件,定时器每隔一定的时间间隔就产生一次Timer事件,用户根据这个特性设置时间间隔来控制某些操作,如使用定时器控件进行动画制作。

1Timer定时器控件的属性和事件

Interval属性:返回或设置定时事件发生的时间间隔。单位为ms。缺省为0,表示时间间隔无穷大,这时Timer控件无效。

Enabled属性:返回或设置Timer控件运行时是否响应各种事件。为定时器的启动或关闭开关。

Timer事件:是Timer唯一可识别事件。在TimerEnabled属性为True时,每隔Interval毫秒系统触发一次TimerTimer事件。

在运行时,定时器是不可见的。其TopLeft属性实际上无意义。

2VB动画设计应用举例

[211]试编程实现在图片框中慢慢地绘出一个圆。如图2-15所示。

对象属性设置:

窗体的Caption为“动画的控制”;窗体上放置一命令按钮,其Caption为“绘制动画”;窗体上放置定时器和图片框控件各一个。运行时,单击命令按钮,开始画圆。界面设置如图2-14所示。

2-14  界面的设置

2-15  动画的绘制过程

程序如下:

Option Explicit

Private Sub Form_Load()

      Show

      Picture1.Scale (-1.2, 1.2)-(1.2, -1.2)       ′原点在图片框中心位置

      Picture1.AutoRedraw = True

      Picture1.Line (-1.2, 0)-(1.2, 0)        ′画X

      Picture1.Line (0, 1.2)-(0, -1.2)        ′画Y

      Picture1.AutoRedraw = False

      Timer1.Enabled = False

      Timer1.Interval = 100

End Sub

 

Private Sub Command1_Click()

      Picture1.Cls

      Timer1.Enabled = True

End Sub

 

Private Sub Timer1_Timer()

      Const pi As Single = 3.14159

      Static i As Integer

      Picture1.Circle (0, 0), 1, QBColor(12), i / 180# * pi, (i + 10) / 180# * pi

      i = i + 10

      If  i = 360 Then

        i = 0

        Timer1.Enabled = False

      End If

End Sub

. 项目指导——简易的四则计算器

1.目的

本项目要求使用文本框和命令按钮来设计计算器。学习目标包括:

(1)控件和控件数组的使用

(2)事件过程的设计

(3)VB的几个内部函数和选择语句的使用

(4)程序错误的处理

2.内容

(1)设计界面

程序的运行界面如图2-16所示。

2-16  计算器运行界面

在程序中设计两个命令按钮控件数组分别表示0910个数字和+-*/四个运算符号,其余均为单个控件。

步骤1 设置窗体的Caption属性为“简易四则计算器”。

步骤2 在窗体添加文本框控件,Name属性为TxtDisplayAlignment1Text为空。

步骤3  在窗体上添加一个命令按钮,Name属性为CmdNumberIndex 0Caption0

步骤4  在命令按钮的上面,添加三个命令按钮,Name均为CmdNumberIndexCaption均分别为123

步骤5  鼠标左键按下,移动鼠标,划过的区域包括上面三个命令按钮,释放鼠标,选中了三个控件。

步骤6  选择“格式|统一尺寸|两者都相同”菜单命令,调整三个控件尺寸大小相同。

步骤7  选择“格式|对齐方式|顶端对齐”菜单命令,调整控件的高度相同。

步骤8  选择“格式|水平间距|相同间距”菜单命令,设置控件间距相同。

步骤9  右键单击鼠标,选择“复制”菜单命令。

步骤10  在窗体上单击鼠标,取消控件的选中,右键单击鼠标,在快捷菜单中,选择“粘贴”菜单命令。

步骤11  移动添加的三个控件到合适位置。

步骤12  右键单击鼠标,再次选择“粘贴”,将新的三个控件添加到合适位置。

步骤13  依次修改上面各命令按钮的IndexCaption属性值分别为19

步骤14  以类似的方法添加运算符控件数组CmdOptIndex的值:+0-1*2/3),并相应修改Caption值。

步骤15  添加命令按钮,NameCmdPointCaption为“.”。

步骤16  添加命令按钮,NameCmdClearCaption为“C”。

步骤15  添加命令按钮,NameCmdExitCaption为“OFF”。

步骤16  添加命令按钮,NameCmdEqualCaption为“=”。

(2) 编写代码

在程序中要考虑到符号按钮和小数点按钮的处理。

●符号按钮的处理

4个符号按钮作为控件数组,当单击任一个符号按钮时,首先应判断单击的是否是“-”按钮。如果在输入第一个操作数前单击了该按钮,则将它作为负号处理;如果单击了运算符号按钮后,紧接着单击了该按钮,也作为负号处理。

例中使用了模块级变量LastInput记录上次单击按钮的类型。该变量的初始值为“Nul”,代表没有输入任何数据;当变量的值为“Num”时,表示上次单击了数字键09,如果LastInput的值为“Neg”,则代表上次单击了负号键;而“Opt”代表上次单击了符号键,当单击了“=”时,变量LastInput的值为“Eqv”。

因此当变量LastInput的值为“Opt”或“Nul”时,单击按钮“-”,将“-”作为负号处理。

●小数点按钮的处理

数据中最多包含一个小数点,因此在单击该按钮时,应检查现有数据中是否包含了小数点。可以使用函数InStr(1TxtDisplay.Text,".)来判断文本框TxtDispay中是否已有小数点。

提示:函数InStr用于在指定字符串中查找是否有特定的子串,如果有,返回子串的第一个字符在字符串中的位置,其格式为:InStr([n1],C1,C2,[n2])。其中:n1指定从字符串C1的第n1个字符位置起开始查找子串C2n1省略时,从C1的第一个字符起查找;n2的默认值为0,表示执行二进制比较,为1时表示按照原文比较。如果返回值为0,表示C1中不包含子串C2

在窗体的通用部分进行下列变量的定义,变量的声明及其含义如下:

Option Explicit

Dim LastInput As String * 3          ′记录上次按下的按键

     Dim Num1 As Double          ′第一个操作数

     Dim Num2 As Double          ′第二个操作数

     Dim OptType As Integer        ′按下哪一个运算符

Dim ResultAs Double          ′表示运算结果

在窗体的Load事件中编写如下代码,进行变量的初始化。

    Private Sub Form_Load()

      ′加载窗体,变量初始化

      LastInput = "nul"

      Num1 = 0                  ′第一个操作数初始值为0

      Num2 = 0                  ′第二个操作数初始值为0

      OptType = -1

      TxtDisplay.Text = "0"

End Sub 

在命令按钮CmdNumberClick事件中添加代码,用于处理用户单击数字键的情况。

Private Sub CmdNumber_Click(Index As Integer)

      ′当按下数字键(0-9)时,向文本框尾部追加数据

      ′并通过变量LastInput记录上次按键为数字键      

If Len(TxtDisplay.Text) > 16 Then Exit Sub

      If TxtDisplay.Text = "0" Or LastInput = "Eqv" Then TxtDisplay.Text = ""

      TxtDisplay.Text = TxtDisplay.Text & Index     ′追加数据

      LastInput = "Num"

End Sub

在小数点按钮CmdPointClick事件中编写如下代码。

Private Sub CmdPoint_Click()

      ′按下小数点按钮的处理过程

      ′如果数据位数超出范围或数据中已包含小数点,退出本过程

If Len(TxtDisplay.Text) > 16 Or InStr(1, TxtDisplay, ".") > 0 _

        And LastInput <> "Eqv" Then Exit Sub


字数:5660    最后更新:1年以前 [08-29 15:31]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第二章  [后一页]:第二章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号