Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Alle,
Ich habe ein Skript mit einer Funktion, die einen GraphBuilder erstellt. Dieser wird dann in Anzeigefelder gepackt und in ein neues Fenster eingefügt. Befehle zum Ändern der FrameBox-Größe innerhalb der Funktion werden ignoriert, und ich kann sie erst ändern, wenn das Fenster erstellt wird. Warum ist das so? Ich möchte, dass diese Funktionalität innerhalb der Funktion liegt, damit ein Diagramm ausgegeben wird, an dem keine zusätzliche Bearbeitung erforderlich ist. Das Ändern des Titels funktioniert innerhalb der Funktion. Warum nicht auch die Größenänderung?
Hier ist ein Beispiel mit 3 verschiedenen Versuchen, die FrameBox-Größe zu ändern – nur der dritte funktioniert.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction= Function( {dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""},
groupByColumn = Column( dt, groupByColumnString );
cb = Context Box(
gb = Graph Builder(
Size( 350, 600 ),
Ignore Platform Preferences( 1 ),
Show Control Panel( 0 ),
Variables( X( Column( X_Parameter ) ), Y( Column( Y_Parameter ) ), Overlay( groupByColumn ) ),
);
rgb = gb << Report;
(rgbOB = ((rgb << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1])) << Set Title( titleText );
//Attempt #1
(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
//Attempt #2
//(rgbOB << XPath( "//FrameBox" )) << Frame Size( 350, 200 );
);
Return( cb );
);
lub = Lineup Box( N Col( 3 ) );
lub << Append( GBfunction( dt, X_Parameter, Y_Parameter, groupColumn, titleText ) );
ob_group = Outline Box( "GB Function example: " || (dt << Get Name) );
ob_group << Append( lub );
nw = New Window( (dt << get name), ob_group );
//Attempt #3
rgb = ob_group << XPath( "//OutlineBox[@helpKey='Graph Builder']" );
//(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
Automatisierung und SkriptingBetreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Ich denke, dass das Ändern der Rahmengröße nicht richtig funktioniert, da der Rahmen noch nicht visualisiert wurde, eine automatische Größenanpassung erfolgt und möglicherweise auch einige Zeitprobleme auftreten können.
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Ich habe versucht, die automatische Dehnung auf 0 und die Dehnung auf keine einzustellen, hat aber offensichtlich nicht geholfen:(
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Herauszufinden, was die Größe zu einer ungewöhnlichen Größe zwingt, ist nicht immer einfach. Gibt es einen bestimmten Grund, warum Sie die << Größe des Graph Builders nicht nutzen? Ich weiß, dass manchmal Vorberechnungen erforderlich sind, z. B. bei der Verwendung von Gruppen oder beim Umbrechen
Mehr anzeigen...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
groupByColumn = Column(dt, groupByColumnString);
cb = Context Box(
gb = dt << Graph Builder(
Size(100, 100),
Ignore Platform Preferences(1),
Show Control Panel(0),
//Fit To Window("Off"),
Variables(
X(Column(X_Parameter)),
Y(Column(Y_Parameter)),
Overlay(groupByColumn)
),
);
);
rgb = Report(gb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) << Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
gb << Size(400, 250);
Return(cb);
);
lub = Lineup Box(N Col(3));
lub << Append(GBfunction(dt, X_Parameter, Y_Parameter, groupColumn, titleText));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), ob_group);
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Ja, es gibt einen Grund: Ich muss dasselbe Erscheinungsbild nachahmen, das ich in früheren Iterationen des Skripts hatte, in denen „Y an X anpassen“ verwendet wurde.
GraphBuilder ändert die FrameBox-Größe abhängig von anderen Elementen im GB-Anzeigefeld – beispielsweise der Achsen- oder Legendengröße.
Am Ende werden diese Diagramme in einen Bericht eingefügt, in dem die Größe des Diagrammbereichs (was genau die FrameBox ist) zwischen den verschiedenen Diagrammen im Bericht konsistent sein sollte. Aus diesem Grund.
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Eine Möglichkeit könnte darin bestehen, zuerst das neue Fenster zu erstellen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({lub, dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
cb = Context Box(
gb = dt << Graph Builder(
Size(600, 600),
Ignore Platform Preferences(1),
Show Control Panel(0),
Fit To Window("Off"),
Variables(X(Eval(X_Parameter)), Y(Eval(Y_Parameter)), Overlay(Eval(groupByColumnString))),
)
);
rgb = Report(gb);
lub << Append(cb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) <<
Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
fbs << Frame Size(400, 250);
);
lub = Lineup Box(N Col(3));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), Window View("Invisible"), ob_group);
GBfunction(lub, dt, X_Parameter, Y_Parameter, groupColumn, titleText);
nw << Show Window(1);
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Ihr Beispiel funktioniert wie beschrieben. Wenn ich jedoch versuche, es in mein reales Skript zu implementieren, wird die Größe der FrameBox am Ende von Size(350, 600) auf einen anderen Wert geändert.
Ich habe die LineUpBox aus einem bestimmten Grund: Ich erzeuge mehrere Diagramme in dieser Box, und jedes dritte (genauer gesagt, jedes ganz rechte in jeder Zeile) zeigt eine Legende an (für alle Diagramme gleich). Wenn ich sie also mit drei Diagrammen ausführe, beträgt die endgültige Größe aller drei FrameBoxen:
{{350, 220}, {350, 220}, {350, 240}}
anstelle von {350, 200}, auf das ich die Größe ändern möchte, oder den anfänglichen {350, 600}, mit denen GraphBuilder es erstellt hat.
Ich werde später versuchen, ein funktionierendes Beispiel zu erstellen, das Ihren Vorschlag widerlegt.
Betreff: Die FrameBox-Größe kann beim Erstellen des Berichts nicht geändert werden – nur, wenn alle Anzeigefelder UND Fenster erstellt wurden.Dies ist seit jeher ein Fehler bei GraphBuilder, und es gibt keine einfache Lösung. Ich habe ein externes Programm, das Benachrichtigungen an JMP zurücksenden kann (es ist ein Localhost-Server, den JMP mit dem Befehl „runcommand“ startet). Ich gebe ihm die Nachricht, dass er JMP in 0,25 Sekunden zurückpingen soll. Bei diesem Pingback löse ich die erzwungene Framegröße aus – die nun erfolgt, nachdem alle Felder gemalt wurden.