你好社区!
我在使用课程时遇到了一些困难,所以我希望有人能帮助我。
一些上下文:我正在编写一个分为两部分的脚本:一个主脚本和一个函数脚本,然后将后者包含在主脚本中。 我正在尝试使用类和命名空间,以确保仅在应该找到变量时才找到变量。 当尝试将“On Change”功能与 Col List Box 一起使用时,我的具体问题就出现了。
我做了一个最小的工作示例来说明我的问题。 考虑主要代码:
Names Default To Here(1);
Clear log(); Clear Globals(); Clear Symbols();
// Include the class script
If( !Namespace Exists( "mainNamespace" ), New Namespace( "mainNamespace" ) );
mainNamespace:dir = Get Default Directory();
Include(mainNamespace:dir || "classScript.jsl");
// Create an object of the class and try to use the function
testObject = New Object( exampleClass());
testObject:method1();
然后是类脚本:
Names Default To Here(1);
If( !Namespace Exists( "classNamespace" ), New Namespace( "classNamespace" ) );
Define Class("exampleClass",
_init_ = Method( {},
this:BC = Open( "$SAMPLE_DATA/Big Class.jmp", Show(1) );
this:window = Empty();
);
method1 = Method({},
this:window = New Window( "Test Window", clb = Col List Box( all, On Change( Show( clb << Get Items ) ) ) );
);
);这个想法是打开一个窗口,您可以在其中从数据表中选择一些列,然后获取包含所选列的列表。 当我不使用类时,这很好用,即,如果我只是将脚本的类部分编写为“普通”代码。 上面的代码设法打开了 Big Class 数据表,以及带有 Col List Box 的窗口,但是每当我点击一列时,我都会得到一个错误:
Send Expects Scriptable Object in access or evaluation of 'Send', clb << /*###*/Get Items /*###*/
是我做错了什么,还是不理解? 还是与“On Change”的编程方式有关? 任何帮助表示赞赏!