Benötigen Sie Hilfe bei der Skripterstellung für Panel BoxIch habe ein Panel-Feld mit V-Listenfeld, das ein Kombinationsfeld und zwei If-Felder mit Inhalten unterschiedlicher Größe enthält. Abhängig von der Auswahl des Kombinationsfelds zeige ich entweder ein kleineres If-Feld oder ein größeres If-Feld.
notReadyTablesText = "Need to join tables";
readyTableText = "I have the table";
selectorOptions = Eval List( {notReadyTablesText, readyTableText} );
Panel Box( "Select tables",
stVLB = V List Box(
readyTablesSelector = Combo Box(
selectorOptions,
selector = readyTablesSelector << Get Selected();
Show( selector );
If(
selector == notReadyTablesText,
notReadyTables << Set( 1 );
readyTables << Set( 0 );,
selector == readyTableText,
notReadyTables << Set( 0 );
readyTables << Set( 1 );
)
;
),
notReadyTables = If Box(
1,
V List Box(
Button Box( "Table 1", t1Open ),
Button Box( "Table 2", t2Open ),
join = Button Box( "Join Tables",
notImplemented;
)
)
),
readyTables = If Box( 0, Button Box( "Load Tables", loadTable ) )
)
);
Wenn ich das Kombinationsfeld umschalte, ändert sich die Größe der Panel-Box und alles, was sich unterhalb dieser Panel-Box befindet, springt. Wie kann ich die gleiche Größe der Panel Box beibehalten?
Ich habe es mit „Höhe festlegen“, „Automatische Dehnung festlegen“, „Mindestgröße festlegen()“ usw. versucht.
InhaltsorganisationDatenzugriffMassenanpassungBetreff: Brauche Hilfe bei der Skripterstellung für Panel BoxVielen Dank!
Ich bin nicht so gut mit Ausdrücken usw. Ich muss das zuerst lesen, um deinen Code verstehen zu können 
Ich verstehe zum Beispiel nicht, warum ich das sagen muss
Eval(Eval Expr(self = Namespace(Expr(self << Get Name)););)
wenn ich es nur sagen kann
self = Namespace(self << Get Name);
und warum muss ich das dann überhaupt sagen? Warum kann ich den Namespace nicht einfach verwenden, indem ich ihn mit „self“ bezeichne?
Betreff: Brauche Hilfe bei der Skripterstellung für Panel BoxEine andere Methode ist die Verwendung von Spacer Box() mit einer Größe in einer Richtung von 0. Sie können die Verwendung hier sehen Ein strukturierter Ansatz zur Programmierung mit JSL zum Erstellen realer, skalierbarer Anwendungen (2019-EU-30MP-098) . Ich glaube, es war der Abschnitt, der um 22:00 Uhr beginnt.
Mehr sehen... Betreff: Brauche Hilfe bei der Skripterstellung für Panel BoxIch spreche von Größe in X, ich spreche von Größe in Y.
In Ihrem Beispiel ändert sich die Höhe der Panel Box.
Das:

vs. dies:

Ich habe noch andere Panel-Boxen darunter – und sie fangen an zu springen.
Wie auch immer, ich habe es aufgegeben und es vorerst als Line-Up-Box implementiert.
Betreff: Brauche Hilfe bei der Skripterstellung für Panel BoxHier ist ein Anwendungsbeispiel H-Splitterbox() Und Aufstellungsbox() um dies zu tun.Beachten Sie, dass dadurch auch alles in einem anonymen Namespace zusammengefasst wird, um Übersprechen zu verhindern, wenn mehrere Fenster gleichzeitig von diesem Skript aus geöffnet werden.
Names Default to Here( 1 );
self = New Namespace();
self:notReadyTablesText = "Need to join tables";
self:readyTableText = "I have the table";
self:selectorOptions = Eval List( {self:notReadyTablesText, self:readyTableText} );
Eval( Eval Expr(
self:button generator = Function( {title, callback},
{Default Local},
self = Namespace( Expr( self << Get Name ) );
Eval( Parse( Eval Insert( JSL Quote(
box = Button Box( title, <<SET function=""></SET>Betreff: Brauche Hilfe bei der Skripterstellung für Panel BoxDie manuelle Einstellung kann etwas schwierig sein Schaltflächenfeld() Größen (ich verwende normalerweise a H-Splitterbox() Und Aufstellungsbox() damit JMP alles automatisch anpasst), aber die beste Methode, die ich gefunden habe, ist das Senden der Nachricht <<MINDESTGRÖSSE festlegen=""> .</MINDESTGRÖSSE>
notReadyTablesText = "Need to join tables";
readyTableText = "I have the table";
selectorOptions = Eval List( {notReadyTablesText, readyTableText} );
pb = Panel Box( "Select tables",
stVLB = V List Box(
readyTablesSelector = Combo Box(
selectorOptions,
selector = readyTablesSelector << Get Selected();
Show( selector );
If(
selector == notReadyTablesText,
notReadyTables << Set( 1 );
readyTables << Set( 0 );,
selector == readyTableText,
notReadyTables << Set( 0 );
readyTables << Set( 1 );
)
;
),
notReadyTables = If Box(
1,
V List Box(
bb1 = Button Box( "Table 1", t1Open ),
bb2 = Button Box( "Table 2", t2Open ),
join = Button Box( "Join Tables",
notImplemented;
)
)
),
readyTables = If Box( 1, bb3 = Button Box( "Load Tables (really long button name)", loadTable ) )
)
);
new window( "test",
pb
);
boxes = {bb1, bb2, bb3, join};
max size = Max( {readytables, notReadyTables} << Get Width );
boxes << Set Min Size( max size, 25 ) << set Max Size( max size, 25 );
readyTables << Set( 0 );