¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.Todo,
No puedo entender este problema:
Necesito asignar controladores a mis gráficos GB. Tengo varios gráficos GB en una ventana. Las variables del script de controladores interactúan. Necesito usar nuevas variables en cada script o crear un nuevo espacio de nombres para cada script de gráficos (parece ser la mejor opción). Sin embargo, en cuanto creo un espacio de nombres, lo direcciono mediante una variable de referencia, que se sobrescribe cada vez que creo un nuevo espacio de nombres.
En el ejemplo a continuación solo uso nombres de variables diferentes, pero es necesario crearlos dinámicamente y direccionarlos correctamente.
Recuerdo que había un truco que usaba algo como:
ns = Namespace( Expr( ns << Get Name ) )
pero no estoy seguro de si es aplicable en este caso y, francamente, no estoy seguro de entender cómo y por qué funciona donde lo estoy usando actualmente.
He aquí un ejemplo 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);
Automatización y scriptingRe: ¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.Creo que podrías omitir los espacios de nombres (en este caso) y utilizar el cuadro de contexto.
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: ¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.Entonces, si creo estos GB dinámicamente y los añado a mi cuadro de alineación, este cuadro de contexto debería aislar las variables dentro de sí mismo, tal como lo hace {Default Local} dentro de una función. Intentémoslo.
Re: ¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.No, no funciona. Los controladores no se comportan de forma independiente. Muevo el controlador en la Parcela 1 y, en cuanto hago clic en el controlador de la Parcela 2, salta a la ubicación donde se encuentra el controlador en la Parcela 1.
Aquí está el guión:
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: ¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.Compara nuestros scripts y seguramente notarás una diferencia (no basta con tener Context Box, también debes utilizarlo).
Re: ¿Cómo crear y direccionar espacios de nombres dinámicamente? Controladores independientes en parcelas de varios GB.Ups, lo siento...:) Culpa mía:)
Si está bien escrito, funciona. ¡Muchas gracias!