Comment créer et adresser dynamiquement des espaces de noms ? Poignées indépendantes sur plusieurs tracés GB.Tous,
Je n'arrive pas à comprendre ce problème :
Je dois ajouter des handles à mes tracés GB. J'en ai plusieurs dans une même fenêtre. Les variables du script handles interagissent. Je dois soit utiliser de nouvelles variables dans chaque script, soit créer un nouvel espace de noms pour chaque script graphique (ce qui me semble être la solution idéale). Mais dès que je crée un espace de noms, je l'adresse via une variable de référence, qui est écrasée à chaque création.
Dans l'exemple ci-dessous, j'utilise simplement des noms de variables différents, mais ils doivent être créés de manière dynamique et traités correctement.
Je me souviens qu'il y avait une astuce qui utilisait quelque chose comme :
ns = Namespace( Expr( ns << Get Name ) )
mais je ne suis pas sûr que cela soit applicable dans ce cas et pour être franc, je ne suis pas sûr de comprendre comment et pourquoi cela fonctionne là où je l'utilise actuellement.
Voici un exemple de script :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
lub = Lineup Box( N Col( 2 ) );
ns1 = New Namespace(
"height"
);
ns1:_x_location_ = 2;
ns1:_y_location_ = 50;
lub << Append(Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
Handle(
ns1:_x_location_,
ns1:_y_location_,
ns1:_x_location_ = x;
ns1:_y_location_ = y;
)
)}
)
)
);
);
ns2 = New Namespace(
"weight"
);
ns2:_x_location_ = 2;
ns2:_y_location_ = 50;
lub << Append(Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
Handle(
ns2:_x_location_,
ns2:_y_location_,
ns2:_x_location_ = x;
ns2:_y_location_ = y;
)
)}
)
)
);
);
win = New Window( "Independent Handles Example",lub);
Automatisation et scriptsRe : Comment créer et adresser dynamiquement des espaces de noms ? Poignées indépendantes sur plusieurs tracés GB.Je pense que vous pourriez simplement ignorer les espaces de noms (dans ce cas) et utiliser la boîte de contexte
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
lub = Lineup Box(N Col(2));
lub << Append(
cb1 = Context Box(
box:_x_location_ = 2;
box:_y_location_ = 50;,
Graph Builder(
Size(528, 450),
Show Control Panel(0),
Variables(X(:age), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(6))),
SendToReport(
Dispatch({}, "Graph Builder", FrameBox,
{Add Graphics Script(
2,
Description(""),
Handle(
box:_x_location_,
box:_y_location_,
box:_x_location_ = x;
box:_y_location_ = y;
)
)}
)
)
)
)
);
lub << Append(
cb2 = Context Box(
box:_x_location_ = 2;
box:_y_location_ = 50;,
Graph Builder(
Size(528, 450),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(6))),
SendToReport(
Dispatch({}, "Graph Builder", FrameBox,
{Add Graphics Script(
2,
Description(""),
Handle(
box:_x_location_,
box:_y_location_,
box:_x_location_ = x;
box:_y_location_ = y;
)
)}
)
)
)
)
);
win = New Window("Independent Handles Example", lub);
Re : Comment créer et adresser dynamiquement des espaces de noms ? Gestion indépendante des tracés de plusieurs Go.Donc, si je crée dynamiquement ces Go et les ajoute à ma boîte de dialogue, cette boîte de contexte devrait isoler les variables en elle-même, comme le fait {Default Local} dans une fonction ? Je vais essayer.
Re : Comment créer et adresser dynamiquement des espaces de noms ? Poignées indépendantes sur plusieurs tracés GB.Non, ça ne fonctionne pas. Les poignées ne se comportent pas indépendamment. Je déplace la poignée sur le tracé 1 ; dès que je clique sur la poignée du tracé 2, le curseur se déplace à l'emplacement de la poignée sur le tracé 1.
Voici le script :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
lub = Lineup Box( N Col( 2 ) );
lub << Append(
Context Box(
_x_location_ = 2;
_y_location_ = 50;
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
Handle(
_x_location_,
_y_location_,
_x_location_ = x;
_y_location_ = y;
)
)}
)
)
);
)
);
lub << Append(
Context Box(
_x_location_ = 2;
_y_location_ = 50;
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
Handle(
_x_location_,
_y_location_,
_x_location_ = x;
_y_location_ = y;
)
)}
)
)
);
)
);
win = New Window( "Independent Handles Example", lub );
Re : Comment créer et adresser dynamiquement des espaces de noms ? Gestion indépendante des tracés de plusieurs Go.Comparez nos scripts et vous remarquerez certainement une différence (avoir simplement Context Box ne suffit pas, vous devez également l'utiliser).
Re : Comment créer et adresser dynamiquement des espaces de noms ? Poignées indépendantes sur plusieurs tracés GB.Oups, désolé...:) Ma faute:)
Bien écrit, ça marche. Merci beaucoup !