1. 程式人生 > >VB控件和對象:ScriptControl控件

VB控件和對象:ScriptControl控件

ror code 表達 post module nbsp data cti 運行

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 語法,

VB控件和對象:ScriptControl控件