高手请进:控件调用外部函数 我做了一个树目录控件,点击到某个节点时想灵活调用控件之外的一个函数,函数名不固定,该怎么实现啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没办法贴代码。我的程序里有一个利用treeview实现的自定义控件,主要功能是显示数据浏览的导航功能。现在我想在控件的某个叶结点上单击时,通过我的控件的事件处理代码,能够在控件外的文本框之类的东东里显示数据。这些文本框不是一个两个,这种显示数据的场合也不是只在一个form里,否则我也就不用控件了。不知道说没说清楚,呵呵呵 还是不大明白在 click 事件里写Select Case TreeView1.SelectedItem Case "1" '你的代码 Case Else '你的代码End Select不可以么? VB6很难实现.如果诸如.Net,Java提供的反射和泛型有可能实现. 呵呵呵,看来楼上的明白我的意思了Case "1" '你的代码里,代码都是活的sub或function,我怎么调用啊。死的代码怎么都能实现。 要是java,用接口就能实现了吧 哦明白了。1。引用Microsoft Script Control 2。Dim VBsc As New ScriptControl VBsc.Execute "你的语句"把execute写到你的case里,参数是string可以参考:Execute 语句执行一个或多个指定的语句。Execute statements所需要的 statements 参数是一个字符串表达式,其中包含一个或多个要执行的语句。 如果要在 statements 参数中包含多条语句,应使用分号或嵌入的分行将其分隔开。 说明在 VBScript 中,x = y 可以有两种解释。首先是作为赋值语句,将 y 的值赋予 x。其次是作为表达式,测试x 和 y 的值是否相等。如果相等,结果为 True;否则,结果为 False。Execute 语句总是使用第一种解释,而 Eval 方法总是使用第二种。注意 在 Microsoft(R) Visual Basic Scripting Edition 中并不存在赋值与比较之间的混淆,因为赋值运算符(=)与比较运算符(==)是不同的。调用 Execute 语句的上下文确定了要运行的代码可以使用的对象和变量。作用域内的对象和变量是 Execute 语句中运行的代码可以使用的。不过,必须明白的一点是,如果被执行的代码创建了过程,那么该过程将不会继承它所在的过程的作用域。与其他过程类似,新的过程的作用域是全局的,它继承了全局作用域的全部东西。与其他过程不同的是,它的上下文不是全局作用域,因此它只能在发生 Execute 语句的过程内的上下文中执行。不过,如果相同的 Execute 语句是在过程之外(例如在全局作用域)的作用域中被调用,那么它将不仅继承全局作用域中的所有东西,而且它还可以在任何地方被调用,因为它的上下文是全局的。下面的例子说明了这种特点:Dim X ' 在全局作用域中声明 X。X = "Global" ' 将全局的 X 赋值。Sub Proc1 ' 声明过程。 Dim X ' 在局部作用域中声明 X。 X = "Local" ' 对局部的 X 赋值。 ' 此处的 Execute 语句建立了一个过程, ' 在调用该过程时它将打印 X。 ' 它打印的将是全局 X,因为 Proc2 ' 继承了全局作用域中的一切。 Execute "Sub Proc2: Print X: End Sub" Print Eval("X") ' 打印本地 X。 Proc2 ' 在 Proc1 的作用域中调用 Proc2。End SubProc2 ' 本行将导致一个错误,因为 ' Proc2 在 Proc1 之外是不可使用的。Proc1 ' 调用 Proc1。 Execute "Sub Proc2: Print X: End Sub"Proc2 ' 这句话可以成功,因为 Proc2 ' 现在是全局可用的。下面的例子显示了如何将 Execute 语句改写,免于将整个过程包含在引号内:S = "Sub Proc2" & vbCrLfS = S & " Print X" & vbCrLf S = S & "End Sub"Execute S 数据库查询 对象Refresh的方法 IAdodc失败 怎样最简单生成5位随机数? ★ 完整的JPEG保存程序 与 高速在网络上传输图像程序 如何做在我的程序里添加像Office XP 里的语音识别功能? 机器上配置了多个IP地址我该怎么取呢?MAC又怎么办呢? //问一个简单的问题,在VB环境下,当引用DLL,OCX时,要用到“引用”和“部件”,“定位”的文件路径是将来打包安装后的路径吗? 请问VB程序怎么安装好啊 学习VB的前途==? 问题---用VB语句更改本机桌面墙纸,怎么写? 求助(超市进销存管理系统论文及程序) ACCESS 中如何用 SQL 生成汇总? 紧急求助!!!
在 click 事件里写
Select Case TreeView1.SelectedItem
Case "1"
'你的代码
Case Else
'你的代码
End Select
不可以么?
'你的代码
里,代码都是活的sub或function,我怎么调用啊。死的代码怎么都能实现。
1。引用Microsoft Script Control
2。
Dim VBsc As New ScriptControl
VBsc.Execute "你的语句"把execute写到你的case里,参数是string可以参考:Execute 语句
执行一个或多个指定的语句。Execute statements所需要的 statements 参数是一个字符串表达式,其中包含一个或多个要执行的语句。 如果要在 statements 参数中包含多条语句,应使用分号或嵌入的分行将其分隔开。 说明
在 VBScript 中,x = y 可以有两种解释。首先是作为赋值语句,将 y 的值赋予 x。其次是作为表达式,测试x 和 y 的值是否相等。如果相等,结果为 True;否则,结果为 False。Execute 语句总是使用第一种解释,而 Eval 方法总是使用第二种。注意 在 Microsoft(R) Visual Basic Scripting Edition 中并不存在赋值与比较之间的混淆,因为赋值运算符(=)与比较运算符(==)是不同的。调用 Execute 语句的上下文确定了要运行的代码可以使用的对象和变量。作用域内的对象和变量是 Execute 语句中运行的代码可以使用的。不过,必须明白的一点是,如果被执行的代码创建了过程,那么该过程将不会继承它所在的过程的作用域。与其他过程类似,新的过程的作用域是全局的,它继承了全局作用域的全部东西。与其他过程不同的是,它的上下文不是全局作用域,因此它只能在发生 Execute 语句的过程内的上下文中执行。不过,如果相同的 Execute 语句是在过程之外(例如在全局作用域)的作用域中被调用,那么它将不仅继承全局作用域中的所有东西,而且它还可以在任何地方被调用,因为它的上下文是全局的。下面的例子说明了这种特点:Dim X ' 在全局作用域中声明 X。
X = "Global" ' 将全局的 X 赋值。
Sub Proc1 ' 声明过程。
Dim X ' 在局部作用域中声明 X。
X = "Local" ' 对局部的 X 赋值。
' 此处的 Execute 语句建立了一个过程,
' 在调用该过程时它将打印 X。
' 它打印的将是全局 X,因为 Proc2
' 继承了全局作用域中的一切。
Execute "Sub Proc2: Print X: End Sub"
Print Eval("X") ' 打印本地 X。
Proc2 ' 在 Proc1 的作用域中调用 Proc2。
End Sub
Proc2 ' 本行将导致一个错误,因为
' Proc2 在 Proc1 之外是不可使用的。
Proc1 ' 调用 Proc1。
Execute "Sub Proc2: Print X: End Sub"
Proc2 ' 这句话可以成功,因为 Proc2
' 现在是全局可用的。
下面的例子显示了如何将 Execute 语句改写,免于将整个过程包含在引号内:S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
Execute S