Besoin d'aide pour la création de scripts Panel BoxJ'ai une boîte de panneau avec une boîte de liste V qui a une boîte combinée et deux boîtes If avec un contenu de taille différente. En fonction de la sélection de la zone de liste déroulante, je montre soit une petite boîte si, soit une plus grande boîte si.
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 ) )
)
);
Lorsque je change de zone de liste déroulante, la taille de la zone de panneau change et tout ce qui se trouve en dessous de cette zone de panneau saute. Comment conserver la même taille de Panel Box ?
J'ai essayé Définir la hauteur, Définir l'étirement automatique, Définir la taille minimale (), etc.
ScriptRe : Besoin d'aide pour la création de scripts Panel BoxIl peut être un peu difficile de régler manuellement Boîte à boutons() tailles (j'utilise habituellement un H Boîte de répartition() et Boîte de programmation() pour que JMP dimensionne automatiquement tout), mais la meilleure méthode que j'ai trouvée est d'envoyer le message <<DÉFINIR la="" taille="" minimale=""> .</DÉFINIR>
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 );Re : Besoin d'aide pour la création de scripts Panel BoxVoici un exemple d'utilisation H Boîte de répartition() et Boîte de programmation() pour faire ça.Notez que cela inclut également tout dans un espace de noms anonyme pour éviter la diaphonie si plusieurs fenêtres sont ouvertes en même temps à partir de ce script.
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>Re : Besoin d'aide pour la création de scripts Panel BoxJe parle de taille en X, je parle de taille en Y.
Dans votre exemple, la hauteur de la boîte de panneau change.
Ce:

contre ceci :

J'ai d'autres boîtes de panneau en dessous de celle-ci - et elles commencent à sauter.
Quoi qu'il en soit, j'ai abandonné et l'ai implémenté en tant que Line Up Box pour le moment.