当加菲猫没说过
在我们的Windows系统里提供了一个叫ScriptControl的com组件,我们可以用这个组件来调用JS等脚本语言的资源。
有些库我们VFP没有的话,JS有的话,我们就可以大量运用了哦。
1 用Eval()来实现表达式的计算
代码语言:javascript复制oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
?oJs.eval("100 5*3")
2 调用JS内置函数,示例汉字编码
代码语言:javascript复制oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
cWords="汉字"
?ojs.Eval('escape("' cWords '")')
传参用拼接的比较累就是了
03
3 调用自定义函数 注意JS的小大写
代码语言:javascript复制TEXT TO lcJs TEXTMERGE PRETEXT 1 2 NOSHOW
function xx1 (x,y){
return x y;
}
ENDTEXT
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
oJs.AddCode(lcJs)
?oJs.Eval("xx1(" '1,2' ")")
也可以用run来调用,更爽一点
代码语言:javascript复制TEXT TO lcJs TEXTMERGE PRETEXT 1 2 NOSHOW
function xx1 (x,y){
return x y;
}
ENDTEXT
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
oJs.AddCode(lcJs)
?oJs.run("xx1",1,2)
只要是添加到Script 控件的函数是完整的,Run 方法就可以运行。
那不完整的片段,我们怎么办呢?
下面就可以用 ExecuteStatement 方法将值 100 赋给变量 x。下面的两行用 eval 方法来测试语句 x = 100 和 x = 100/2。第二行返回 .T.;而第三行则返回 .F.。
代码语言:javascript复制oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
oJs.ExecuteStatement("x = 0/100")
?oJs.Eval("x == 100") && 返回 .T.
?oJs.Eval("x == 100/2") && 返回 .F.