Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenHallo, ich habe ein JSL-Skript, das innerhalb einer for-Schleife eine Reihe von Outline-Boxen an das Journal sendet (d. h. jeder Zyklus der Schleife erstellt eine neue Outline-Box, von der ich eine Kopie an das Journal sende, sobald sie erstellt wird). ). Gibt es eine Möglichkeit, den resultierenden Satz von Gliederungsfeldern innerhalb des Journals gleichzeitig zu öffnen oder zu schließen, indem ich die Broadcasting-Tastenkombination verwende (d. h. die -Taste gedrückt halten, während nur eines davon geöffnet oder geschlossen wird)?
Ich habe eine Reihe von Anwendungen geschrieben, in denen ich dies tun möchte. In einigen davon scheine ich diese Funktionalität ohnehin versehentlich eingebaut zu haben, in anderen jedoch nicht – aber ich kann nicht herausfinden, wo der Unterschied in der Art und Weise liegt, wie ich sie geschrieben habe. In allen Fällen enthalten die Gliederungsfelder eine identisch formatierte Datenzusammenfassung, deren einziger Unterschied in den tatsächlich zusammengefassten Zahlen liegt.
Vielen Dank für alle Vorschläge.
Betreff: Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenVielen Dank für beide Vorschläge – ich werde eine der vorgeschlagenen Problemumgehungen verwenden, die beide genauso gut funktionieren.Wie immer ist es nützlich zu wissen, dass es keinen trivialen Trick gibt, den ich einfach übersehen habe 
Betreff: Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenLeider ist es Ihnen nicht möglich, die helpKey-Werte zu ändern, da JMP auf diese angewiesen ist.
Sie könnten jedoch eine Schaltfläche erstellen, die alle OutlineBoxes erweitert/reduziert, anstatt die Steuertaste zu verwenden, und sich dabei auf OutlineBox-Titel und helpKeys verlassen. Weitere Informationen finden Sie in meinem Beispiel unten
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Owl Diet.jmp" );
yList = dt << get column names( string );
Remove From( yList, N Items( yList ) );
nw = New Window( "Example",
Button Box( "Collapse All",
<<SET function=""></SET>
ExpandedExpandedErweitert
CollapsedCollapsedZusammengebrochen
Betreff: Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenDies muss auf den gemeinsamen HelpKey zurückzuführen sein, den alle Ausgaben des Graph Builders gemeinsam haben. Der beste Hinweis, den ich zu HelpKeys gefunden habe, war Hier , Vielleicht @Justin_Chilton Kann ich etwas Licht ins Dunkel bringen, ob der HelpKey beim Senden von etwas an ein Journal festgelegt oder für ein Element im Journal geändert werden kann? Wenn dies nicht möglich ist, besteht eine Lösung darin, zwischen jeder Ausgabe ein Textelement einzufügen:

Wenn Sie die Ausgabe des Graph Builders unter ein Gliederungsfeld verschieben, können Sie den HelpKey mit „Baumstruktur anzeigen“ anzeigen:

Betreff: Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenHallo, vielen Dank dafür, und ich habe überprüft, dass ich tatsächlich, wenn alle Gliederungsfelder denselben Titel haben, sie gleichzeitig mit einem gesendeten Öffnungs-/Schließbefehl öffnen und schließen kann. Leider brauche ich tatsächlich unterschiedliche Titel, da ich, wenn sie alle geschlossen sind, nicht mehr so leicht erkennen kann, welche(n) ich konkret öffnen möchte.
Ich habe ein Beispiel dafür gefunden, dass eines meiner Skripte so funktioniert, wie ich es möchte – es bezieht sich jedoch auf eine Situation, in der ich mehrere Kopien der Graph Builder-Ausgabe aus einer for-Schleife an das Journal sende. Bei jedem Durchlauf der Schleife ändere ich die Variablen, die der Graph Builder zeichnet, und sende dann eine Kopie an das Journal, bevor ich den nächsten ausführe. Der relevante Teil des Skripts funktioniert folgendermaßen:
dt = Open( "$SAMPLE_DATA/Owl Diet.JMP" );
yList = dt << get column names(string);
remove from(yList, nItems(yList));
show(yList);
// Create the chart as I want it to look for the first item on the list, and send a copy of it to the journal;
gb = Graph Builder(
Show Control Panel( 0 ),
Size( 600, 250 ),
Show Legend( 0 ),
Variables( X( :species ), Y( as column(column(dt, yList[1])) ) ),
Elements( Box Plot( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Analysis of " || title case(yList[1]) )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
);
report(gb) << journal();
// Then run all the others in sequence by each time replacing the current Y variable with the next one, and adding them to the journal as we go;
for(i=2, i<=nItems(yList), i++,
gbb = report(gb);
gbb << Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Analysis of " || title case(yList[i]) )} );
gbb[GraphBuilderBox(1)] << remove variable(2);
gbb[GraphBuilderBox(1)] << add variable({as column(column(dt, yList[i])), role("Y")});
gbb << journal()
);
// Finally, close the original chart window;
gb << close window;
Der Broadcasting-Befehl funktioniert in diesem Fall, vermutlich weil alle Diagramme tatsächlich „Graph Builder“ heißen, obwohl sie unterschiedliche Bezeichnungen erhalten haben – und genau diesen Effekt möchte ich reproduzieren, wenn ich Gliederungsfelder an das Journal sende waren nicht erstellt mit dem Graph Builder.
Alle Vorschläge sind willkommen, auch wenn ich vielleicht das Unmögliche verlange.
Vielen Dank.
Betreff: Anwenden des Broadcasting-Befehls auf eine Reihe von Outline-BoxenWenn Sie meiner Erfahrung nach die Titel der Gliederungsfelder anpassen, werden sie alle mit der Strg-Taste (unter Windows) geöffnet oder geschlossen.Wenn Sie mit der rechten Maustaste darauf klicken und den Mauszeiger über „Alle auf diese Weise schließen“ bewegen, wird ein Tooltip angezeigt, der darauf hinweist, dass identische Hilfetasten den gleichen Effekt haben. Ich habe jedoch keine Hinweise auf die Verwendung von Hilfetasten in Zeitschriften oder JSL gefunden.
