Cómo hacer referencia al cuadro de esquema desde el menú de triángulo rojo sin utilizar variablesA continuación se muestra un ejemplo reelaborado de Scripting Index:
Names Default To Here( 1 );
ob = Outline Box( "Picker",
{"Copy picture", ob << Copy Picture()},
H List Box( Text Box( "Label:" ), teb = Text Edit Box( Char( 213 ) ) )
);
New Window( "Example",
ob
);
Agrega un elemento de menú en el menú del triángulo rojo que copiaría la imagen de este cuadro al buffer.
El script funciona bien.
Mi pregunta es: ¿qué pasa si creo mis cuadros de esquema dinámicamente y no tengo una variable asignada a ellos?
¿Cómo puedo hacer referencia a este cuadro de esquema sin variable? Algo que utilice las palabras clave "this" o "self".
Algo así como esto en el segundo cuadro:
Names Default To Here( 1 );
vb = V List Box(
ob = Outline Box( "Picker",
{"Copy picture", ob << Copy Picture()},
H List Box( Text Box( "Label:" ), teb = Text Edit Box( Char( 213 ) ) )
),
Outline Box( "Picker",
{"Copy picture", this << Copy Picture()},
H List Box( Text Box( "Label number 2:" ), teb = Text Edit Box( Char( 213 ) ) )
);
);
New Window( "Example",
vb
);
Hay buenos ejemplos en el índice de secuencias de comandos para la función Establecer en función del número de cuadros de visualización:
Names Default To Here( 1 );
New Window( "Example",
Button Box( "press me", <<SETFUNCTION></SETFUNCTION>
But in this case we're not setting function, we're setting script, and this syntaxis doesn't work.
So, how do I accomplish this?
<LINGO-LABS id="lingo-labs-825339" slang="en-US" mode="CREATE"><LINGO-LABEL>Automatización y scripting</LINGO-LABEL></LINGO-LABS>Re: Cómo hacer referencia al cuadro de esquema desde el menú del triángulo rojo sin usar variablesNo creo que tengas esa funcionalidad para los scripts de menú de cuadro de esquema, por lo que debes usar algo más. Se me ocurren tres opciones aceptables:
- Evaluar la referencia
- Utilizar el ámbito de aplicación de la ventana
- Utilice el visor de caja
Names Default To Here(1);
context_example = Context Box(
box:ob1 = Outline Box("Picker",
{"Copy picture1", box:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(213))
)
)
);
eval_example = Outline Box("Picker",
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(612))
)
);
Eval(EvalExpr(
eval_example << Set Menu Script(
{"Copy Picture3", Expr(eval_example) << Copy Picture()}
);
));
nw = New Window("Example",
context_example,
window:ob1 = Outline Box("Picker",
{"Copy picture2", window:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(451))
)
),
eval_example
);Re: Cómo hacer referencia al cuadro de esquema desde el menú del triángulo rojo sin usar variablesParece que los cuadros Eval y Context funcionan en mi caso, pero Window no.
Esto es lo que utilicé para verificar: imita la creación dinámica de cuadros de esquema:
Names Default To Here(1);
vb = V List Box();
context_example = Context Box(
box:ob1 = Outline Box("Context1",
{"Copy picture1", box:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(213))
)
)
);
vb << Append (context_example);
context_example = Context Box(
box:ob1 = Outline Box("Context2",
{"Copy picture1", box:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(213))
)
)
);
vb << Append (context_example);
eval_example = Outline Box("Eval1",
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(612))
)
);
Eval(EvalExpr(
eval_example << Set Menu Script(
{"Copy Picture3", Expr(eval_example) << Copy Picture()}
);
));
vb << Append (eval_example);
eval_example = Outline Box("Eval2",
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(612))
)
);
Eval(EvalExpr(
eval_example << Set Menu Script(
{"Copy Picture3", Expr(eval_example) << Copy Picture()}
);
));
vb << Append (eval_example);
nw = New Window("Example",
window:ob1 = Outline Box("Window1",
{"Copy picture2", window:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(451))
)
),
window:ob1 = Outline Box("Window2",
{"Copy picture2", window:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box(Char(451))
)
),
vb
);En el caso de Ventana, en ambos casos de Ventana1 y Ventana2, copia la imagen del cuadro de Ventana2.
Re: Cómo hacer referencia al cuadro de esquema desde el menú del triángulo rojo sin usar variablesPuede utilizar una variable varias veces en un script para asignar distintos valores. Al final, la variable contendrá el último valor. Esto es válido para
x=5;
x=7;
show(x);
y para :ob1 .
La solución utiliza 2 variables diferentes para definir referencias a 2 objetos diferentes:
nw = New Window("Example",
window:ob1 = Outline Box("Window1",
{"Copy picture", window:ob1 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box("#1")
)
),
window:ob2 = Outline Box("Window2",
{"Copy picture", window:ob2 << Copy Picture()},
H List Box(
Text Box("Label:"),
teb = Text Edit Box("#2")
)
)
);
Re: Cómo hacer referencia al cuadro de esquema desde el menú del triángulo rojo sin usar variablesEstás sobrescribiendo tus referencias en tu ejemplo de ventana (usa window:ob1 y window:ob2 por ejemplo). Esto no sucede dentro del cuadro de contexto ya que box: parece recordar a qué cuadro de contexto pertenece. Dependiendo de tu caso de uso y aplicación "reales", el método de evaluación suele ser el más sólido, pero todos estos tienen sus pros y sus contras (al igual que el uso de referencias directas).
Re: Cómo hacer referencia al cuadro de esquema desde el menú del triángulo rojo sin usar variablesEs difícil encontrar más detalles, incluso para los LLM:
