你好社區!
我在使用課程時遇到了一些困難,所以我希望有人能幫助我。
一些上下文:我正在編寫一個分為兩部分的腳本:一個主腳本和一個函數腳本,然後將後者包含在主腳本中。 我正在嘗試使用類和命名空間,以確保僅在應該找到變量時才找到變量。 當嘗試將“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”的編程方式有關? 任何幫助表示讚賞!