VB控件和对象:ScriptControl控件 【转】VB控件和对象:ScriptControl 控件

【转】VB控件和对象:ScriptControl 控件

3. ScriptControl 控件

    Microsoft Script Control 控件可以创建运行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic (R) Scripting Edition 或Microsoft(R) JScript(TM) 的应用程序。简单的的说,可以在程序运行期间,允许用户编写代码并执行代码,计算带变量的的表达式等。

    ■运行时设置程序代码:
    '▲显式创建,勾选引用(不选部件) Microsoft Script Control
    Private Sub Command1_Click()
       Dim strProgram As String, sc As ScriptControl
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       sc.AddCode strProgram
       '运行代码
       sc.Run "My1"
    End Sub
    '▲隐式创建,不勾选部件和应用
    Private Sub Command1_Click()
       Dim strProgram As String, sc
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       sc.AddCode strProgram
       '运行代码
       sc.Run "My1"
    End Sub
    '▲使用控件,勾选部件 Microsoft Script Control,并向窗体添加控件 ScriptControl1
    Private Sub Command1_Click()
       Dim strProgram As String
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       ScriptControl1.Language = "VBScript"
       ScriptControl1.AddCode strProgram
       '运行代码
       ScriptControl1.Run "My1"
    End Sub

■Script的模块与过程
    '▲添加一个模块,默认只有一个模块:Global
       ScriptControl1.Modules.Add "Modu2"
    '▲在模块 1 中添加过程代码,
    '注意 Script 变量定义不能指定类型, dim a as long 会出错
       nStr="dim a" & vbCrLf & _
    "Function MyFun(x,y)" & vbCrLf & _
    "   a=a+1 " & vbCrLf & _
    "   MsgBox ""a="" & a & "" x+y="" & x+y,vbInformation,""运行时设置代码""" & vbCrLf & _
    "   My1=a" & vbCrLf & _
    "End Function"
       ScriptControl1.Modules(1).AddCode nStr
    '▲调用有返回值的函数
       d = ScriptControl1.Modules(1).Run(MyFun, 1, 2) '运行代码
    '▲列出所有模块名称
       Dim I As Long
       List1.Clear
       For I = 1 To ScriptControl1.Modules.Count
          List1.AddItem ScriptControl1.Modules(I).Name
       Next
    '▲列出模块 M 的所有过程名称
       Dim I As Long,M as long
       List2.Clear
       M=1
       For I = 1 To ctSc.Modules(M).Procedures.Count
          List2.AddItem ctSc.Modules(M).Procedures(I).Name
       Next
    End Sub

■计算带变量的表达式
    Private Sub Command1_Click()
      '执行一条 scripting 语句例子
       x = 10
       ScriptControl1.ExecuteStatement "x=" & x '执行一条 scripting 语句,将值 10 赋给变量 x
       S = ScriptControl1.Eval("(x-1)^2")
       MsgBox S
    End Sub

■错误通告 
    Private Function ErrInf() As String
       ErrInf = ScriptControl1.Language & " 语法错误:行 " & ScriptControl1.Error.Line & ",列 " & ScriptControl1.Error.Column & vbCrLf & vbCrLf & _
    "错误号:" & ScriptControl1.Error.Number & "," & ScriptControl1.Error.Description
    End Function

■ScriptControl 控件的语句使用 VBScript 语法,

3. ScriptControl 控件

    Microsoft Script Control 控件可以创建运行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic (R) Scripting Edition 或Microsoft(R) JScript(TM) 的应用程序。简单的的说,可以在程序运行期间,允许用户编写代码并执行代码,计算带变量的的表达式等。

扫描二维码关注公众号,回复: 4994004 查看本文章

    ■运行时设置程序代码:
    '▲显式创建,勾选引用(不选部件) Microsoft Script Control
    Private Sub Command1_Click()
       Dim strProgram As String, sc As ScriptControl
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       sc.AddCode strProgram
       '运行代码
       sc.Run "My1"
    End Sub
    '▲隐式创建,不勾选部件和应用
    Private Sub Command1_Click()
       Dim strProgram As String, sc
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       sc.AddCode strProgram
       '运行代码
       sc.Run "My1"
    End Sub
    '▲使用控件,勾选部件 Microsoft Script Control,并向窗体添加控件 ScriptControl1
    Private Sub Command1_Click()
       Dim strProgram As String
       '编写代码
       strProgram = "Sub My1" & vbCrLf & _
    "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
    "End Sub"
       '设置代码语言,并将代码添加到 ScriptControl
       ScriptControl1.Language = "VBScript"
       ScriptControl1.AddCode strProgram
       '运行代码
       ScriptControl1.Run "My1"
    End Sub

■Script的模块与过程
    '▲添加一个模块,默认只有一个模块:Global
       ScriptControl1.Modules.Add "Modu2"
    '▲在模块 1 中添加过程代码,
    '注意 Script 变量定义不能指定类型, dim a as long 会出错
       nStr="dim a" & vbCrLf & _
    "Function MyFun(x,y)" & vbCrLf & _
    "   a=a+1 " & vbCrLf & _
    "   MsgBox ""a="" & a & "" x+y="" & x+y,vbInformation,""运行时设置代码""" & vbCrLf & _
    "   My1=a" & vbCrLf & _
    "End Function"
       ScriptControl1.Modules(1).AddCode nStr
    '▲调用有返回值的函数
       d = ScriptControl1.Modules(1).Run(MyFun, 1, 2) '运行代码
    '▲列出所有模块名称
       Dim I As Long
       List1.Clear
       For I = 1 To ScriptControl1.Modules.Count
          List1.AddItem ScriptControl1.Modules(I).Name
       Next
    '▲列出模块 M 的所有过程名称
       Dim I As Long,M as long
       List2.Clear
       M=1
       For I = 1 To ctSc.Modules(M).Procedures.Count
          List2.AddItem ctSc.Modules(M).Procedures(I).Name
       Next
    End Sub

■计算带变量的表达式
    Private Sub Command1_Click()
      '执行一条 scripting 语句例子
       x = 10
       ScriptControl1.ExecuteStatement "x=" & x '执行一条 scripting 语句,将值 10 赋给变量 x
       S = ScriptControl1.Eval("(x-1)^2")
       MsgBox S
    End Sub

■错误通告 
    Private Function ErrInf() As String
       ErrInf = ScriptControl1.Language & " 语法错误:行 " & ScriptControl1.Error.Line & ",列 " & ScriptControl1.Error.Column & vbCrLf & vbCrLf & _
    "错误号:" & ScriptControl1.Error.Number & "," & ScriptControl1.Error.Description
    End Function

■ScriptControl 控件的语句使用 VBScript 语法,

猜你喜欢

转载自www.cnblogs.com/yqzip/p/10294275.html
今日推荐