Script Control
最近有接触到Script Control . 有些问题, 需请教各位.怎么导入Class Module , 然后怎么样需要进行什么处理后, 可以像VB里自由使用.
--------------------编程问答-------------------- “工程”菜单,“添加类模块”->选择“现存”标签,找到要添加的类模块,打开。 --------------------编程问答--------------------
高手,人家不是说的这个。是问怎么把class的代码,文本形式的,放到控件里去运行。
以前写过,但都是函数式的。
类的话,应该可以,主要是没动力去研究。 --------------------编程问答-------------------- VBS 中只能使用类,不能定义类。 --------------------编程问答--------------------
VBS文件可以定义类的:
dim t--------------------编程问答-------------------- 嗯,定义类没问题,主要是不能定义接口 --------------------编程问答-------------------- 原来可以!学习了。
set t = new test
call msgbox(t.prop1)
class test
property get prop1()
prop1 = "This is a test."
end property
public sub class_initialize()
end sub
public sub class_terminate()
end sub
end class
那么很简单,用 Script Control 的 AddCode 将类定义加进去就是了。 --------------------编程问答--------------------
嗯,会者不难:)虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 --------------------编程问答-------------------- 虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下 --------------------编程问答--------------------
语法中没有 Module .. End Module 吧,所有 AddCode 加进去的 Module 代码其实只属于一个模块吧。
我喜欢在 VB 的 Class 中实现功能点,供 VBS 的简短动态代码调用。不写大段的 VBS。 --------------------编程问答-------------------- 多个Modules之间的访问,我只找到在VB里先用AddObject暴露对象的办法,上周基于这个方案,替人40元写了个示例。这样写肯定比用class来处理麻烦,相互间调用,中间还要弄了CodeObject
Private Sub DoTestScript2()--------------------编程问答--------------------
On Error GoTo DoTestScript2
'On Error GoTo 0
mScript.WAIT 200
Dim script_control As ScriptControl ' Object
Dim sMod26 As String, sMod27 As String
Dim strLine As String
'Text1.Text = strLine
sMod26 = "26"
sMod27 = "27"
Dim vals As Integer
Dim oModule As Module
vals = 4
Set script_control = CreateObject("MSScriptControl.ScriptControl")
script_control.Language = "VBScript"
'script_control.AddCode strLine
Set oModule = script_control.Modules.Add("mdl" & sMod27)
oModule.AddCode ReadTxtFile(App.Path & "\" & sMod27 & ".csq")
script_control.AddObject sMod27, oModule
Set oModule = script_control.Modules.Add("mdl" & sMod26)
oModule.AddCode ReadTxtFile(App.Path & "\" & sMod26 & ".csq")
script_control.AddObject "list", List1
script_control.AddObject "Text", Text1
script_control.AddObject "scrobj", mScript
'script_control.Run "main"
script_control.Modules(sMod26).Run "main"
'script_control.Modules(sMod27).Run "MSG"
Exit Sub
DoTestScript2:
If Err <> 0 Then
MsgBox "错误 " & Err.Number & " (" & Err.Description & ") in procedure Command1_Click of Form Form1"
End If
End Sub
请问你说的多个Modules相互调用,是用的类似我那种先把模块对象用AddObject加到公共模块中去的方式吗 --------------------编程问答-------------------- 看看有什么技巧。 --------------------编程问答-------------------- --------------------编程问答-------------------- 虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下。 --------------------编程问答--------------------
你按4楼的示例,把多个class的代码并列写着就行了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 看过,谢谢~~~~~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 拿分来的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
可否加好友讨论下,有个问题需要请教你。看了你的回复,我知道你一定懂得 --------------------编程问答-------------------- 补充一下,script_control.AddCode就相当于script_control.Modules("Global").AddCode,而Global这个Module是一开始就默认存在的
补充:VB , 控件