1、用鼠标点选这个标签,ctrl+c,ctrl+v创建数组,放到适当位置,重复总共放置5个,包含原来的那个。把 它们依次排开吧,赋上不同的Caption作为区分,怕麻烦就12345吧,不怕麻烦就,哎呀,自己想显示啥就写啥(6)在新出现的控件中添加再两个Label所有Label的形状相同(为的是节约空间,简洁好看麻),visable=false,名称分别为Label2和lb3(7)5个Timer按下F5欣赏到效果如下:写程序啦本程序由标签循环显示动画、弹出按键分配动画、错误提示动画和计算部分四个部分组成,下面分别介绍如何实现上述部分。标签循环显示动画:首先是Label()数组及时间控件的初始化,双击
2、窗体,添加以下程序Private Sub Form_Load() For i = 0 To 4/把这个标签数组重叠,初始化显示的位置 Label1(i).Visible = False Label1(i).Top = 3600 Label1(i).Left = 0 Next i Label1(0).Visible = True Timer1.Interval = 2000/显示2秒钟后显示下一条提示 Timer2.Interval = 50/移动时间间隔 Timer1.Enabled = True Timer2.Enabled = FalseEnd Sub 要达到的效果就是。*按键循环滚动动画
3、*再添加以下程序Private Sub Timer1_Timer() If i = 5 Then Label1(1).Visible = False Label1(2).Visible = False Label1(3).Visible = False Label1(4).Visible = False Label1(0).Top = 3600 Label1(1).Top = 3600 Label1(2).Top = 3600 Label1(3).Top = 3600 Label1(4).Top = 3600 i = 0 End If Timer2.Enabled = True i = i +
4、 1End SubPrivate Sub Timer2_Timer() Label1(i - 1).Top = Label1(i - 1).Top + 50 Exit Sub Label1(i).Visible = True在代码窗口的顶端选通用声明加上Dim i As Integer/就定义了一个i的全局变量接下来就可以按下F5看看这个动画了。*错误提示动画添加以下程序Private Sub Timer5_Timer() If lb3.Top tb.Height Then lb3.Top = lb3.Top - 150 Else lb3.Top = tb.Height If c 0 Then
5、 img.Top = 0Private Sub Timer4_Timer() img.Top = img.Top - 100 If img.Top For i = 1 To n ans = ans * i fac = ans fac = 1完整的KeyDown程序为Dim i, j, p, q, m, flag, flag1, flag2, flag3 As IntegerDim b As DoubleDim s, inexp, expression, temp, s1, msg As String禁止修改已计算过的内容If tb.SelStart + cur_l store_s ThenIf
6、 光标位置+补偿(光标前一个字符位置)历史记录长度(即光标处在历史记录位置中)Select case判断是按下的什么键有效的按键为上下左右、end、homeDel则清空tb.text,历史记录长度,光标补偿Esc结束程序其它则keycode=93,此code不打印,形成忽略的效果Else开始整个为输入、纠错和计算过程 Select Case KeyCode Case 33 To 40 store_s = 0 cur_l = 0 Case Else数据纠错* expression = Right(tb.Text, Len(tb.Text) - store_s)/每按下一次键就刷新表达式dot_s
7、 = /dot_s是存储操作数的变量flag=0 If tb.SelStart For i = tb.SelStart + cur_l To 1 Step -1 Select Case Mid(tb.Text, i, 1) Case 0 To 9, . dot_s = Mid(tb.Text, i, 1) & dot_s flag = i For i = tb.SelStart + cur_l + 1 To Len(tb.Text) dot_s = dot_s & Mid(tb.Text, i, 1) i = Len(tb.Text)按键分配与纠错If tb.SelStart = 0 Then
8、 flag1 = 1 flag1 = 0如果09前面的字符是!或)则表明缺少运算符 Select Case Mid(tb.Text, tb.SelStart + cur_l + flag1, 1) Case !, ) KeyCode=noti ( KeyCode = noti (2前缺少运算符3前缺少运算符4前缺少运算符 KeyCode =noti (5前缺少运算符6前缺少运算符7前缺少运算符8前缺少运算符9前缺少运算符 keycode=noti (0前缺少运算符 Case vbKey8 If tb.SelStart = 0 Then keycode=noti( *前缺少操作数 Select Case Mid(tb.Text, tb.SelStart + cur_l, 1) Case vbKey9 keycode=noti(前缺少运算符 Case vbKey0 If tb.SelStart = 0 Or InStr(1, expression, () + store_s tb.SelStart + cur_l Or InStr(1, expression, ) = 0 Then)前无匹配的( Select Case Mid(tb.Te