Ciao comunità!
Sono rimasto un po' bloccato durante l'utilizzo delle classi, quindi spero che qualcuno possa aiutarmi.
Un po' di contesto: sto lavorando su uno script che è diviso in due: uno script principale e uno script di funzioni, dove quest'ultimo è poi incluso nello script principale. Sto cercando di lavorare con classi e spazi dei nomi, per assicurarmi che le variabili vengano trovate solo quando dovrebbero essere trovate. Il mio problema specifico si verifica quando provo a utilizzare la funzione "On Change" con una casella di riepilogo colonne.
Ho fatto un esempio funzionante minimo che illustra il mio problema. Considera il codice principale:
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();
e poi lo script di classe:
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 ) ) ) );
);
);L'idea è di aprire una finestra in cui è possibile selezionare alcune colonne da una tabella di dati e quindi ottenere un elenco con le colonne selezionate. Funziona bene quando non uso le Classi, cioè se scrivo solo la parte delle classi dello script come codice "normale". Il codice sopra riesce ad aprire la tabella dei dati di Big Class e la finestra con la Col List Box, ma ogni volta che clicco su una colonna, ottengo un errore:
Send Expects Scriptable Object in accesso o valutazione di 'Send', clb << /*####*/Get Items /*####*/
C'è qualcosa che sto sbagliando o che non capisco? O ha qualcosa a che fare con la programmazione di "On Change"? Qualsiasi aiuto è apprezzato!