【转】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 语法,

转载于:https://www.cnblogs.com/rosesmall/archive/2012/11/15/2771585.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值