Office中国论坛/Access中国论坛

标题: 非常简单实用的计算器 [打印本页]

作者: todaynew    时间: 2009-3-26 19:35
标题: 非常简单实用的计算器
本帖最后由 todaynew 于 2009-3-26 19:50 编辑

  使用Windos计算器想返回计算结果比较麻烦,看了一些用VB编写计算器也忒复杂了。想来不应该将简单问题复杂化。于是乎便决定用尽可能少而且易于理解的语句编写一个计算器,于是花了半天时间算是折腾出来了。

      实际上编写计算器的关键语句就是一条,也就是Eval函数。这个函数可以将一个字符串表示的算式计算出结果了。按照这个思路下去,你只是需要得到一个用阿拉伯数字和运算符号连接起来的字符串了,这样一来问题就十分简单了。具体怎么搞定,你可以去看看代码。

     倒是在调用计算器并将计算结果写入指定控件处,着实费了些周折。周折处主要有二,其一是被OpenArgs参数迷惑了个把小时,几经摸索算是搞明白了所以然;其二是获得当前控件的名称,折腾好一阵也没搞清楚,好在经t小宝同志指点,终于豁然开朗。

     闲话不多说了,贴上来给同志们参考一下。

[attach]36944[/attach]

[attach]36945[/attach]

主窗体:
Private Sub 折让_DblClick(Cancel As Integer)
    '请在OpenArgs参数中,用,号分割主窗体、子窗体控件、控件名称
    Dim Ctlname As String
    Ctlname = Screen.ActiveControl.Name
    DoCmd.OpenForm "myCalc", , , , , , Me.Form.Name & "," & Ctlname
End Sub

子窗体:
Private Sub 数量_DblClick(Cancel As Integer)
    '请在OpenArgs参数中,用,号分割主窗体、子窗体控件、控件名称
    Dim Ctlname As String
    Ctlname = Screen.ActiveControl.Name
    DoCmd.OpenForm "myCalc", , , , , , Me.Parent.Form.Name & "," & Me.Form.Name & "," & Ctlname
End Sub

myCalc窗体:
Private Sub 等于_Click()
Dim str As String
Dim Pfname As String
Dim Sfname As String
Dim Cname As String
On Error GoTo 等于_Err
    If IsNull(Me.计算.Value) = False Then
        Me.计算.Value = Eval(Me.计算.Value)
    Else
         Me.计算.SetFocus
        Exit Sub
    End If
    If OpenArgs <> "" Then
        str = OpenArgs
        Pfname = Mid(str, 1, InStr(1, str, ",") - 1)
        str = Replace(str, Pfname & ",", "")
        If InStr(1, str, ",") = 0 Then
            Sfname = Pfname
            Cname = str
            Forms(Sfname).Form.Controls(Cname).Value = Me.计算.Value
        Else
            Sfname = Mid(str, 1, InStr(1, str, ",") - 1)
            str = Replace(str, Sfname & ",", "")
            Cname = str
            Forms(Pfname).Controls(Sfname).Form.Controls(Cname).Value = Me.计算.Value
        End If
        DoCmd.Close acForm, "myCalc"
    End If
等于_Exit:
    Exit Sub
等于_Err:
    Me.计算.Value = "兄弟,搞错了吧?!^o^  "
    Resume 等于_Exit
End Sub


Private Sub L0_Click()
    Me.计算.Value = Me.计算.Value & Me.L0.Caption
End Sub
。。。。。

(VBA基础-相关文章技巧链接):
Access非常简单实用的计算器


作者: luhao    时间: 2009-3-26 19:51
  使用Windos计算器想返回计算结果比较麻烦,看了一些用VB编写计算器也忒复杂了。想来不应该将简单问题复杂化。于是乎便决定用尽可能少而且易于理解的语句编写一个计算器,于是花了半天时间算是折腾出来了。

   ...
todaynew 发表于 2009-3-26 19:35


多谢老师
作者: ACMAIN_CHM    时间: 2009-3-26 20:04




******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.


作者: Henry D. Sy    时间: 2009-3-26 20:09
支持
作者: todaynew    时间: 2009-3-26 21:16
谢谢同志们!
作者: 蓝天8390    时间: 2009-3-26 21:28
的确好用,会代码就是好,可惜我是学不会了!
作者: 老鬼    时间: 2009-3-27 09:43
支持!你想个办法,把动态效果(如经过时变色、按下时下沉)加到“按钮”(实际上是标签)上,更传神~~
作者: 5988143    时间: 2009-3-27 12:38
學習了~
作者: todaynew    时间: 2009-3-27 21:06
支持!你想个办法,把动态效果(如经过时变色、按下时下沉)加到“按钮”(实际上是标签)上,更传神~~
老鬼 发表于 2009-3-27 09:43

好的,好像可以用调整特殊样子和前后景颜色解决。
作者: lymin    时间: 2009-3-28 10:33
收藏了,对我有启发
作者: BT幽灵    时间: 2009-3-30 22:18
正在招呢。。。谢谢
作者: yanwei82123300    时间: 2009-3-31 07:41
的确好用,会代码就是好,可惜我是学不会了!
作者: su_xx    时间: 2009-3-31 11:08
非常不错,学习了
作者: asklove    时间: 2009-5-6 15:27
好东西啊,以前怎么没看到
作者: biaotiger1    时间: 2009-7-6 09:52
厉害。。。。
作者: wskbm    时间: 2009-8-11 10:24
都是牛人
作者: linini    时间: 2009-8-11 11:51
学习
作者: wzh    时间: 2009-8-13 14:25
學習
作者: ilovshevchenko    时间: 2009-8-19 20:45
学习了
作者: 朱同学    时间: 2009-8-19 21:42
很好
作者: wufeng980114    时间: 2009-12-31 21:17
谢谢,很好的DD




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3