Usaría el generador de gráficos en combinación con el control deslizante para cambiar la apariencia del gráfico.En el siguiente ejemplo, creo una ventana con un mapa y un cuadro deslizante para cambiar interactivamente la escala de los colores. Usaría el script para crear diferentes ventanas (por supuesto, incluso con diferentes variables, pero en el ejemplo esto no es necesario).Funciona solo para la última ventana creada, a pesar de que intento asignar las variables usando espacios de nombres. Lo intenté de otra manera pero todo fue sin éxito. ¿Alguien puede ayudar?
Names Default To Here(1);
dtable= Open("$SAMPLE_DATA/SAT.jmp");
name="Map";
For(k=1, k<=10, k++,
If(Namespace Exists(Eval("ns" || name || Char(k))),
//If(k = 10,
// hanlde the max number of allowed namespaces
//);
,
name= name || char(k);
nsRef = New Namespace(Eval("ns" || name ));
Break();
)
);
nsRef << Insert("column", "% Taking (2004)");
nsRef << Insert("min", col min(column(dtable, "% Taking (2004)")));
nsRef << Insert("max", col max(column(dtable, "% Taking (2004)")));
nsRef << Insert("slmin", col min(column(dtable, "% Taking (2004)")));
nsRef << Insert("slmax", col max(column(dtable, "% Taking (2004)")));
datacolumn=column(dtable, nsRef:column );
nsRef << Insert("slider1",
slider box(nsRef:min,nsRef:max,nsRef:slmax,
title= Current Window() << Get Window Title;
ns = NameSpace(Eval("ns" || title));
slmin=ns:slmin;
slmax=ns:slmax;
scale=Matrix( {slmin,slmax} );
scale=scale`;
ns:gb <<SENDTOREPORT></SENDTOREPORT>
Te estás moviendo en la dirección correcta. Necesita un espacio local y, dependiendo de la tarea, aquí hay varias opciones que recomendaría:
- Dado que solo está cambiando la leyenda y cada GB estará en una ventana separada, un método simple para hacerlo es usar el alcance de la ventana, el espacio de nombres de la ventana. ventana: control deslizante1 = SliderBox() . Vea el guión adjunto.
- Si solo se cambia la leyenda y si tiene varios GB en la ventana, use un < para el cuadro deslizante que utiliza una referencia relativa al GB correspondiente. Si GB y HListBox(TextBox, Sliderbox) están anidados en un VListBox, la función sería algo así como (este << padre) << padre para llegar a VListBox, entonces puede usar mensajes para llegar al cuadro de leyenda y realizar los cambios.Me gusta usar XPath(). Este tipo de codificación es un poco más complicado.
- Supongamos que tiene varios GB con diferentes Y pero la misma X. Si desea limitar X o excluir una fila para Y1 pero no para Y2, entonces cada GB debe tener su propia Cuadro contextual del filtro de datos() , filtro de datos local.
Con suerte, el script adjunto que utiliza el alcance de la ventana satisfará sus necesidades actuales.