Comment étendre GB pour remplir tout l’espace disponible ?Disons que j'ai une boîte d'alignement à 3 colonnes avec des zones d'affichage, puis, comme deuxième ligne, une boîte de désalignement avec un générateur de graphiques à l'intérieur.
Un exemple peut être vu en exécutant ce script :
dt = New Table( "DEMO",
Add Rows( 10 ),
New Column( "Category",
Character,
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"} )
),
New Column( "X",
Character,
"Nominal",
Set Values( {"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"} )
),
New Column( "Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [12, 32, 42, 23, 21, 12, 34, 53, 23, 12] )
)
);
tab = dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table(
Analysis Columns( :Y_veryLongName_toMake_Tabulat_Large ),
Statistics( Sum, Mean )
),
Row Table( Grouping Columns( :Category, :X ) )
)
);
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel( 0 ),
Variables(
X( :Category ),
X( :X, Position( 1 ) ),
Y( :Y_veryLongName_toMake_Tabulat_Large ),
Color( :Category )
),
Elements( Points( X( 1 ), X( 2 ), Y, Legend( 9 ) ) )
);
rtab = tab << Report;
rgb = gb << Report;
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);Voici donc à quoi cela ressemble :

Maintenant, je veux que Graph Builder remplisse tout l'espace horizontal. Je ne connais pas la taille de cet espace, donc je ne veux pas le spécifier directement, je veux juste qu'il remplisse tout l'espace disponible.
J'ai essayé d'utiliser Set Auto Stretching (1,0) sur RVB, mais cela n'a pas beaucoup aidé.
Expérimentalement, j'ai découvert que si je vais dans les propriétés et change l'étirement pour X de Neutre à Remplir pour CHAQUE BOÎTE de Frame Box jusqu'à Outline Box, comme ça :

alors on dirait que je veux que ça ressemble :

Des questions:
1. Est-ce le seul moyen ?
2. Si c'est le cas, comment le scripter ?
Mise à jour : je suppose que je devrais pouvoir utiliser XPath avec l'ancêtre ou le moi-même (ou dans une variante plus simple, juste l'ancêtre ci-dessous), mais je n'arrive pas à le faire fonctionner.
rgb << Xpath("//FrameBox/ancestor")Personnalisation de masseRe : Comment étendre GB pour remplir tout l'espace disponible ?Je pense que cela fonctionne si vous définissez l'étirement automatique sur la zone de cadre après le clonage du rapport :
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
lb[FrameBox(1)] << Set Auto Stretching(1,0);
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
Les propriétés d'étirement sont généralement effacées lorsque les boîtes sont clonées, car les comportements ne se traduisent pas toujours lorsque la disposition change.
Re : Comment étendre GB pour remplir tout l'espace disponible ?Eh bien, c'est un bon moyen de le faire, sauf que dans mon cas d'utilisation, ce script s'exécute sur de nombreuses tables qu'un utilisateur charge consécutivement, et cette fenêtre ajoute ces boîtes d'alignement les unes après les autres. À chaque table suivante, la précédente se ferme, je ne peux donc pas avoir de graphiques en direct, j'ai besoin d'avoir des rapports qui resteraient après la fermeture de la table.
J'ai essayé d'exécuter cette expression :
gb_expr = Expr(
(gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
))<<REPORT></REPORT>
mais ça n'a pas marché. Avez-vous une idée de comment le modifier pour que Graph Builder ne disparaisse pas de la fenêtre si je ferme le tableau ?
Re : Comment étendre GB pour remplir tout l'espace disponible ?Une autre option serait également de créer le générateur de graphiques directement dans la nouvelle fenêtre
Names Default To Here(1);
dt = New Table("DEMO",
Add Rows(10),
New Column("Category", Character, "Nominal", Set Values({"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"})),
New Column("X", Character, "Nominal", Set Values({"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"})),
New Column("Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([12, 32, 42, 23, 21, 12, 34, 53, 23, 12])
)
);
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Analysis Columns(:Y_veryLongName_toMake_Tabulat_Large), Statistics(Sum, Mean)),
Row Table(Grouping Columns(:Category, :X))
)
);
gb_expr = Expr(
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
)
);
rtab = tab << Report;
lb = Lineup Box(N Col(3), rtab, rtab, rtab, Unlineup Box(gb_expr));
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
gb << Auto Stretching("On");Re : Comment étendre GB pour remplir tout l'espace disponible ?Ok, j'ai essayé plus de choses :
rgb << Fit To Window("On");Celui-ci n'a pas fonctionné.
rgb[FrameBox(1)] << Set Auto Stretching(1,0);
Celui-ci, dans lequel j'applique l'étirement automatique à FrameBox, et non à l'ensemble du rapport, a fonctionné.
Les questions que j'ai rencontrées au cours du processus sont toujours d'actualité : quelle est la syntaxe appropriée pour les axes XPath ? Comme, ancêtre, enfant, ancêtre ou soi-même, etc....