如何使用脚本控件的函数调用

本文演示如何调用从 Visual Basic 脚本函数的各种方法的脚本控件提供了示例代码。

更多信息

重要提示: Microsoft 提供的编程示例仅用于说明,没有任何明示或暗示的担保,包括但不是限于) 对适销性和/或针对特定用途的适用性的暗示保证。本文假定您熟悉所演示的编程语言和用于创建和调试过程的工具。

脚本控件可以承载 VBScript、 JavaScript 和任何其他兼容的脚本语言,因此您的用户可以编写您的应用程序以相似的方式与使用 VBScript 或 JavaScript 提供其他功能的 Web 页的脚本。

下面 Microsoft 知识库中相应的文章介绍了如何获取脚本控件:
184739 : 信息: 获取脚本控件的位置

脚本控件提供了四种方法 Sub 和函数调用的脚本例程:
  • Eval: 文本表达式的计算结果。
  • 运行: 运行命名的子程序或函数。
  • 执行: 执行脚本语句。
  • 与模块对象的方法。

评估

调用约定是:
  Result = ScriptControl.Eval("some text expression")

				
您可以使用此方法调用这两个内部脚本函数,以及用户的功能。函数参数作为表达式文本中的文本值进行传递和可以进行硬编码或从变量连接在一起。

注意: 不能使用此方法调用的子例程。

运行

调用约定是:
  Result = ScriptControl.Run("Name", arg1, arg2, ... argn)

				
您可以使用此方法来调用的子例程,在其中返回的结果的情况下为空,并可以使用备用的调用约定忽略返回结果:
  ScriptControl.Run "Name", arg1, arg2, ... argn

				
注意: 名称是该名称的子例程或函数,并 arg1...argn 都是根据子程序或函数可选。

执行

调用约定是:
  ScriptControl.Execute "statement text"

				
此方法允许您调用的任何内部语句或子例程。您还可以使用它来调用函数,但返回的结果将被删除。

模块方法

调用约定是:
   Result = ScriptControl.Modules(modulename).functionname(arg1, arg2, ...)
   ScriptControl.Modules(modulename).subname arg1, arg2, ...
				

默认的模块如 GlobalModule 常量,指定:
   Result = ScriptControl.Modules(GlobalModule).MyFunction(5)
   ScriptControl.Modules(GlobalModule).MySub 5, "A"
				

ScriptControl 模块的详细信息,请参阅下面 Microsoft 知识库中相应的文章:
184745 : 如何使用脚本控制模块和过程的集合

示例

  1. 在 Visual Basic 中创建一个新项目。默认情况下,将创建 Form1。
  2. 在项目菜单中,单击组件,然后选择"Microsoft 脚本控件 1.0"复选框。
  3. 向表单添加脚本控件 (ScriptControl1)、 文本框中 (文本 1) 和一个命令按钮 (command1)。将文本框中的多行属性设置为 True。
  4. 向 Form1 中添加以下代码:
          Private Sub Command1_Click()
            With ScriptControl1
              ' Set script language (VBScript is the default).
              .Language = "VBScript"
              ' Set UI interaction (TRUE is the default).
              .AllowUI = True
              ' Copy the script to the control.
              .AddCode Text1.Text
              ' Demonstrate the Eval method.
              Debug.Print .Eval("AddTwo(5,7)")
              ' Demonstrate the Run method both with and without return values.
              .Run "Hello", "Jane Doe"
              Debug.Print .Run("Hello", "James Smith")
              .Run "AddTwo", 4, 6
              Debug.Print .Run("AddTwo", 7, 8)
              ' Demonstrate the ExecuteStatement method.
              .ExecuteStatement "Hello ""Sue Smith"""
              .ExecuteStatement "AddTwo 9,18"
              .ExecuteStatement "MsgBox CStr(AddTwo(3,8))"
              .Modules(GlobalModule).Hello "Jane Doe"
              Dim oMod As Object
              Set oMod = .Modules(GlobalModule)
              Debug.Print oMod.AddTwo 12, 24
              Set oMod = Nothing
            End With
          End Sub
    
    						
  5. 运行 Form1,然后打开调试窗口。
  6. 在文本框中键入以下脚本:
          Sub Hello(YourName)
            MsgBox "Hello " & YourName
          End Sub
    
          Function AddTwo(X1, X2)
            AddTwo = X1 + X2
          End Function
    
    						
  7. 单击命令按钮。

    注意: 以下两个语句不产生输出函数返回将丢失,并且该代码不输出通过任何其他方式,例如,全局变量或消息框的结果,因为:
          .Run "AddTwo", 4, 6
          .ExecuteStatement "AddTwo 9,18"
    



    <linker :http://support.microsoft.com/kb/184740/zh-cn >
posted @ 2013-06-10 19:45  MMLoveMeMM  阅读(445)  评论(0)    收藏  举报