当前位置:编程学习 > VB >>

Script Control

最近有接触到Script Control . 有些问题, 需请教各位. 
怎么导入Class Module , 然后怎么样需要进行什么处理后, 可以像VB里自由使用. 
--------------------编程问答-------------------- “工程”菜单,“添加类模块”->选择“现存”标签,找到要添加的类模块,打开。 --------------------编程问答--------------------
引用 1 楼 theforever 的回复:
“工程”菜单,“添加类模块”->选择“现存”标签,找到要添加的类模块,打开。


高手,人家不是说的这个。是问怎么把class的代码,文本形式的,放到控件里去运行。

以前写过,但都是函数式的。
类的话,应该可以,主要是没动力去研究。 --------------------编程问答-------------------- VBS 中只能使用类,不能定义类。 --------------------编程问答--------------------
引用 3 楼 Tiger_Zhao 的回复:
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 将类定义加进去就是了。 --------------------编程问答--------------------
引用 6 楼 Tiger_Zhao 的回复:
原来可以!学习了。
那么很简单,用 Script Control 的 AddCode 将类定义加进去就是了。


嗯,会者不难:)虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 --------------------编程问答-------------------- 虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下 --------------------编程问答--------------------
引用 7 楼 bcrun 的回复:
嗯,会者不难:)虽然这控件支持弄多个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
--------------------编程问答--------------------
引用 8 楼 bangguox 的回复:
虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下


请问你说的多个Modules相互调用,是用的类似我那种先把模块对象用AddObject加到公共模块中去的方式吗 --------------------编程问答-------------------- 看看有什么技巧。 --------------------编程问答-------------------- --------------------编程问答-------------------- 虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下。 --------------------编程问答--------------------
引用 14 楼 u010394060 的回复:
虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些 .但我不会,帮顶下。


你按4楼的示例,把多个class的代码并列写着就行了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 看过,谢谢~~~~~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 拿分来的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 9 楼 Tiger_Zhao 的回复:
Quote: 引用 7 楼 bcrun 的回复:
嗯,会者不难:)虽然这控件支持弄多个Modules相互调用,但有些需求,写成多个类模块,都放在默认的Global模块下可能更合适些

语法中没有 Module .. End Module 吧,所有 AddCode 加进去的 Module 代码其实只属于一个模块吧。
我喜欢在 VB 的 Class 中实现功能点,供 VBS 的简短动态代码调用。不写大段的 VBS。

可否加好友讨论下,有个问题需要请教你。看了你的回复,我知道你一定懂得 --------------------编程问答-------------------- 补充一下,script_control.AddCode就相当于script_control.Modules("Global").AddCode,而Global这个Module是一开始就默认存在的
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,