表达式计算控件: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
让用户在一个文本框中输入表达式: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
解决方案 »
- 急!MSGBOX中VBYesVBNo的描述是否跟系统有关
- 如何在VB中写把密码转换成Hash字符串呢?
- 请问各位有把一个网页里链接的全部技术文章一次保存到电脑上面的软件吗??(即脱机操作)急!!!
- 现在有哪些好点的VB书籍?
- 请问如何去掉FORM中的最大化按钮,在线等!
- 数据库关联表的查询显示问题?急!
- 怎么样,固定一个MDI窗口的大小?使它都能最大化,最不化。
- 关于WebBrowser & window.close()的问题
- 高分求教:DataEnvironment怎样使用?
- 关于api~~大家帮帮我啊~~~~~急~!急~!急~!急~!
- 除了recordset.update能提交数据外,还有其它方法提交数据吗?
- 怎样将要打印的内容(picturebox.picture)传送到剪贴板中?
.AddObject "txtView", txtView
.ExecuteStatement "txtView.Text=""You wanna change"""
End With
可以对界面控件修改属性
ScriptControl里使用函数是一样的吗??
ScriptControl如何写function啊??sub我会写了,不知道function的传递是否能够用。解决后立刻结贴,决不食言~~~再次谢谢。而且如果不够可以再补,因为这个对我很重要,谢谢各位高手。
如果谁有详细介绍这方面的网址或网站请不吝赐教。谢谢另:nik_Amis(Azrael) 起码肯定有一半分了。如果不够请说明,可以再给。而fail250(屡战屡败),很抱歉,因为我问的都是有关使用ScriptControl做控件的控制或一些语言的实现,如VB中的函数实现等。因此你的回答可能没有分或很少分。请原谅,在此给与衷心感谢。
ScriptControl里使用函数是一样的吗??
ScriptControl如何写function啊??sub我会写了,不知道function的传递是否能够用。解决后立刻结贴,决不食言~~~再次谢谢。而且如果不够可以再补,因为这个对我很重要,谢谢各位高手。
如果谁有详细介绍这方面的网址或网站请不吝赐教。谢谢另:nik_Amis(Azrael) 起码肯定有一半分了。如果不够请说明,可以再给。而fail250(屡战屡败),很抱歉,因为我问的都是有关使用ScriptControl做控件的控制或一些语言的实现,如VB中的函数实现等。因此你的回答可能没有分或很少分。请原谅,在此给与衷心感谢。
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
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