表达式计算控件:MS Script Control控件
让用户在一个文本框中输入表达式:324*5.5+(240-16)/4,然后按一下按纽就Msgbox结果,看来容易吗?其实不然,在编程代码中是直接写的,但要程序运行时具有此功能,能运算用户的表达式,不易(一个符号一个符号检测都不行——还有括号呢)。
VB总是十分容易,只要一个控件,MS Script Control,一切轻松搞定。
该控件能运行VBScript代码!也就是将代码作为一个字符串,赋予控件的ExecuteStatement方法,就能在程序运行时运行用户输入的“代码”。比如:
Private Sub Command2_Click()
  CodeStr = "a=3" & vbCrLf & "b=4" & vbCrLf & "Msgbox ""a+b="" & a+b"
  ScriptControl1.ExecuteStatement CodeStr
End Sub
代码是有格式的,因此上面vbCrlf换行符不能丢。你也可以直接给用户提供一个文本框作为代码窗口,让他在文本框里输入多行代码,然后用ScriptControl运行之,就象在VBScript开发环境中点击“运行”一样。
有了这个控件,计算用户的表达式就很容易了:
Dim CalcStr As String                            ‘TEXT1由用户输入表达式。
CalcStr = "x=" & Text1.Text & vbCrLf & "MSGBOX ""计算结果="" & x"
ScriptControl1.ExecuteStatement CalcStr

解决方案 »

  1.   

    With ScriptControl
            .AddObject "txtView", txtView
            .ExecuteStatement "txtView.Text=""You wanna change"""
        End With
    可以对界面控件修改属性
      

  2.   

    谢谢,还想问一个问题,addobject是不是add什么object的都可以阿??
    ScriptControl里使用函数是一样的吗??
    ScriptControl如何写function啊??sub我会写了,不知道function的传递是否能够用。解决后立刻结贴,决不食言~~~再次谢谢。而且如果不够可以再补,因为这个对我很重要,谢谢各位高手。
    如果谁有详细介绍这方面的网址或网站请不吝赐教。谢谢另:nik_Amis(Azrael) 起码肯定有一半分了。如果不够请说明,可以再给。而fail250(屡战屡败),很抱歉,因为我问的都是有关使用ScriptControl做控件的控制或一些语言的实现,如VB中的函数实现等。因此你的回答可能没有分或很少分。请原谅,在此给与衷心感谢。
      

  3.   

    谢谢,还想问一个问题,addobject是不是add什么object的都可以阿??
    ScriptControl里使用函数是一样的吗??
    ScriptControl如何写function啊??sub我会写了,不知道function的传递是否能够用。解决后立刻结贴,决不食言~~~再次谢谢。而且如果不够可以再补,因为这个对我很重要,谢谢各位高手。
    如果谁有详细介绍这方面的网址或网站请不吝赐教。谢谢另:nik_Amis(Azrael) 起码肯定有一半分了。如果不够请说明,可以再给。而fail250(屡战屡败),很抱歉,因为我问的都是有关使用ScriptControl做控件的控制或一些语言的实现,如VB中的函数实现等。因此你的回答可能没有分或很少分。请原谅,在此给与衷心感谢。
      

  4.   

    Private Sub cmd_Click()
        Dim sFun As String
        Dim a, b As Long
        
        a = 2
        b = 3
        sFun = "function MySum(a ,b) " & vbCrLf & _
             "MySum=a+b" & vbCrLf & _
             "End Function" & vbCrLf
             
        With sc
            .Modules.Add "modAdd"
            .Modules.Item(1).AddCode sFun
            Debug.Print .Modules.Item(1).Procedures.Item(1).Name
    '        .AddCode sFun
            MsgBox .Run("MySum", a, b)
        End With
    End Subtry it
      

  5.   

    Private Sub cmd_Click()
        Dim sFun As String
        Dim a, b As Long
        
        a = 2
        b = 3
        sFun = "function MySum(a ,b) " & vbCrLf & _
             "MySum=a+b" & vbCrLf & _
             "End Function" & vbCrLf
             
        With sc
            .Modules.Add "modAdd"
            .Modules.Item(1).AddCode sFun
            Debug.Print .Modules.Item(1).Procedures.Item(1).Name
    '        .AddCode sFun
            MsgBox .Run("MySum", a, b)
        End With
    End Subtry it