【轉】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 語法,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM