So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenHallo zusammen,
Ich hatte gehofft, dass mir jemand helfen könnte, den Code zum Ändern der Panelgröße im Graph Builder herauszufinden.
Dies stammt aus dem großen Klassendatensatz:

Wenn ich die Größe mithilfe von JSL deutlich vergrößern wollte (die automatische Fensteranpassung ist deaktiviert), sähe das etwa so aus:

wie würde ich das erreichen?
Der Grund, warum ich diese Funktion brauche, ist, dass die Diagramme derzeit immer kleiner werden, je mehr Ebenen Sie haben, wenn Sie einen Filter für die Spalte „Seite“ verwenden. Wenn Sie viele Ebenen haben, können sie so klein werden, dass Sie nicht einmal den Griff zum Ändern der Größe der Bedienfelder sehen können. Ich muss also einige Ebenen auswählen, die Größe ändern, weitere Ebenen auswählen, die Größe ändern usw. ... Sehr ärgerlich und nimmt dieser neuen Funktion des Graph Builders etwas von ihrer Großartigkeit. Auf der anderen Seite werden die Diagramme immer größer, wenn Sie viele Ebenen haben, die genau dann skaliert sind, wenn Sie Ebenen im Filter entfernen.
Ich möchte also über JSL ein Eingabefeld haben, in dem ich die Größe einfach und schnell ändern kann.
Ich hoffe, das ergibt Sinn und danke für alle Ideen!
Steve
Automatisierung und SkriptingDatenexploration und -visualisierungBetreff: So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenIch wollte hinzufügen, wo ich basierend auf Ihrem Code gelandet bin. Es wird ein schwebendes Fenster bereitgestellt, in dem ich die Bedienfelder interaktiv nach meinen Wünschen skalieren kann:
//rev 5-5-24
Names Default To Here(1);
dt=current data table();
obj=current report()["Graph Builder"]<< get scriptable object;
obj1 = obj << Get Window Title;
s = Window(obj1)<< Get Window Size();
nw = New Window("Resize Graph Builder Page Panels",Show Menu( 0 ),Show Toolbars( 0 ),
V List Box(
h list box(
vlist box(
text box("frame Size Y"),
neb1=Number Edit Box( 250 );
),
vlistbox(
textbox("frame Size X"),
neb2=Number Edit Box( 350 );
)
),
Button Box("Update Frames",
Report(obj)<< Fit to Window("Off");
nebval1=neb1 << Get;
nebval2=neb2 << Get;
(Report(obj) << XPath("//FrameBox")) << Frame Size(nebval2, nebval1);
window(obj1) << Set Window Size( s );
),
)
);
nw << Size Window( 400, 200 );
window(obj) << On Close(window("Resize Graph Builder Page Panels")<<CLOSE window=""></CLOSE>Betreff: So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenDas funktioniert wunderbar, danke!!
Betreff: So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenEs muss irgendwie ausgelöst werden, höchstwahrscheinlich durch ein Steuerelement oder einen Handler (in diesem Beispiel können Sie beispielsweise dieselbe Funktion aufrufen, bevor der Filterhandler mit etwas wie f(0) angewendet wird).
Mehr anzeigen...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92)))
)
);
ldf = gb << Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
);
change_frame_size = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(500, 500);
);
change_frame_size(0);
rs = ldf << Make Filter Change Handler(change_frame_size);
Unten sehen Sie den einfachsten Fall, in dem es durch Drücken einer Taste ausgelöst wird.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
V List Box(
Button Box("Update Frames",
(Report(window:gb) << XPath("//FrameBox")) << Frame Size(300, 300);
),
window:gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
)
)
)
);
Betreff: So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenDanke, Jarmo! Das ist wirklich nah dran, aber es sieht so aus, als würde ich diesen Codeabschnitt mit einer neuen Größe ausführen:
f = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(500, 500);
);
rs = ldf << Make Filter Change Handler(f);Dieser Graph Builder aktualisiert die Größe der Diagramme erst, wenn ich die Filteroptionen ändere. Gibt es eine Möglichkeit, das Diagramm zu zwingen, die Größe zu aktualisieren, ohne dass der Filter geändert werden muss?
Geplant ist, nach Abschluss der Auswahl ein schwebendes Fenster zu haben, in dem ich je nach Anzahl der ausgewählten Ebenen unterschiedliche Rahmengrößen eingeben kann.
Vielen Dank für alle weiteren Informationen!
Betreff: So ändern Sie die Größe des Graph Builder-Bedienfelds, wenn Sie die Seiten-/Zeilenorganisation verwendenIch bin nicht sicher, ob es andere Möglichkeiten gibt, als dies über JSL zu steuern, aber Sie können die Rahmengröße ändern (falls nicht, könnte es sich lohnen, ein Wunschlistenelement zu erstellen. „Fenstergröße sperren“ für Datenfilter, da wir bereits „Skalen sperren“ haben).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92)))
)
);
ldf = gb << Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
);
f = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(300, 300);
);
rs = ldf << Make Filter Change Handler(f);
Möglicherweise möchten Sie dem Diagrammersteller/Ihrem Fenster eine Art „Größenerzwingung“ hinzufügen, damit die Größe des Fensters nicht ständig geändert wird.