Problem beim Abrufen von LegendenelementenIn JMP18 (18.1.1) funktioniert dieses Beispiel aus dem Skriptindex nicht:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
item << Set Label( "Item " || Char( index ) )
);
Es wird die Fehlermeldung erzeugt:

also, Legend Server << Legendenelemente abrufen()
gibt keine skriptfähigen Objekte zurück?
Automatisierung und SkriptingBetreff: Legendenelemente abrufen: keine skriptfähigen ObjekteProblemumgehung:
Verwenden Sie das Get Legend-Element
Vergessen Sie nicht, i vorab auszuwerten, um das Legendenelement zu erhalten
- Für das festgelegte Label ist keine Vorabbewertung erforderlich.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
Nitems = Nitems(( server << Get Legend Items)[1]);
for(i=1, i<= Nitems, i++,
Eval(Eval Expr(item = server << Get Legend Item(1, Expr(i))));
item << Set Label( "Item " || Char( i ) )
);
Betreff: Legendenelemente abrufen: keine skriptfähigen ObjekteNächste Falle: Funktioniert nicht für Balkendiagramme?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb =Graph Builder(
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Bar( X, Y ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
show(items);
server << get legend item(1,1) // error message

Bearbeiten: Ich konnte das Problem auf einem anderen Computer / nach einem Neustart von JMP (?) nicht reproduzieren.
Betreff: Legendenelemente abrufen: keine skriptfähigen ObjekteEs gibt tatsächlich skriptfähige Objekte zurück. Das scheint ein Fehler bei For Each() zu sein. Wenn Sie den Code in etwas ändern, das gleichwertig sein sollte, funktioniert es.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
items[1][index] /*isn't this exactly what item is?*/ << Set Label( "Item " || Char( index ) )
);Betreff: Legendenelemente abrufen: keine skriptfähigen ObjekteAh, entschuldigen Sie, Sie haben Recht, die einzelnen Elemente sind tatsächlich skriptfähig.
Interesting: a batch message like items << get label produces the same issue.
maybe batch messages use für jeden in the background ?
Als ich tiefer grub, fand ich ein altes Ticket: TS-00128192
Glücklicherweise hat das Problem inzwischen genügend Priorität bekommen – in JMP19 (EA5) ist es behoben:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;<BR /><BR />items << get label // same issue as with for each
show(items[1][1])
items[1][1] << get label(); // OK, on the lowest level, there <U>is</U> a scriptable object
Show(tmp = items[1][1::2]); // then this is a list of ...
tmp[1] << get Label(); // ...no
Betreff: Legendenelemente abrufen: keine skriptfähigen Objekte
@mmarchandFSLR schrieb:
Es gibt tatsächlich skriptfähige Objekte zurück.
andererseits ... etwas überraschend:

JMP19:
