Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Tous,
J'ai un script avec une fonction qui crée un GraphBuilder. Il est ensuite compressé dans des boîtes d'affichage et placé dans une nouvelle fenêtre. Les commandes permettant de modifier la taille d'une FrameBox depuis la fonction sont ignorées, et je ne peux la modifier qu'à la création de la fenêtre. Pourquoi ? J'aimerais que cette fonctionnalité soit intégrée à la fonction, afin de générer un tracé sans modification supplémentaire. La modification du titre se fait directement depuis la fonction, pourquoi ne pas en modifier la taille ?
Voici un exemple avec 3 tentatives différentes pour modifier la taille de FrameBox - seule la troisième fonctionne.
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 );
Automatisation et scriptsRe : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Je pense que changer la taille du cadre ne fonctionne pas correctement car le cadre n'a pas encore été visualisé, un redimensionnement automatique prend le dessus et il peut également y avoir des problèmes de synchronisation.
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.J'ai essayé de régler l'étirement automatique sur 0 et l'étirement sur aucun, évidemment, cela n'a pas aidé:(
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Il n'est pas toujours facile de déterminer ce qui force une taille anormale. Y a-t-il une raison particulière pour laquelle vous n'utilisez pas la fonction << Taille de Graph Builder ? Je sais que cela peut parfois nécessiter des calculs préalables, par exemple lors de l'utilisation de groupes ou de renvois à la ligne.
Voir plus...
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);
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Oui, il y a une raison : je dois imiter le même aspect et la même sensation que j'avais dans les itérations précédentes du script qui utilisait Fit Y by X.
GraphBuilder modifiera la taille de FrameBox en fonction des autres éléments de la zone d'affichage GB - taille de l'axe ou de la légende, par exemple.
À la fin, ces tracés seront intégrés à un rapport où la taille de la zone graphique (la FrameBox) doit être cohérente entre les différents tracés du rapport. Voilà pourquoi.
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Une option pourrait être de créer d’abord la nouvelle fenêtre
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);
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Votre exemple fonctionne tel qu'il est écrit. Cependant, lorsque j'essaie de l'implémenter dans mon script réel, il redimensionne la FrameBox de Size(350, 600) à une autre taille à la fin.
En fait, j'utilise LineUpBox pour une raison : je génère plusieurs tracés dans cette boîte, et un tracé sur trois (ou plus précisément, chaque tracé à droite de chaque ligne) affiche une légende (identique pour tous les tracés). Ainsi, lorsque j'exécute trois tracés, la taille finale des trois FrameBox est :
{{350, 220}, {350, 220}, {350, 240}}
au lieu de {350, 200} vers lequel j'essaie de le redimensionner ou du {350, 600} initial avec lequel GraphBuilder l'a créé.
J'essaierai de faire un exemple fonctionnel qui contredit votre suggestion plus tard.
Re : Impossible de modifier la taille de FrameBox lors de la création d'un rapport - uniquement lorsque toutes les zones d'affichage ET la fenêtre sont créées.Ce bug est récurrent dans GraphBuilder, et il n'existe pas de solution simple. J'utilise un programme externe qui envoie des notifications à JMP (un serveur local que JMP démarre avec runcommand). Je lui envoie un message pour envoyer un ping à JMP dans 0,25 seconde. Sur ce ping, je déclenche le forçage de la taille d'image, qui intervient désormais une fois toutes les boîtes peintes.