Come fare riferimento alla casella Outline dal menu del triangolo rosso senza utilizzare variabiliEcco un esempio rielaborato da 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
);
Aggiunge una voce di menu nel menu del triangolo rosso che copierà l'immagine di questa casella nel buffer.
Lo script funziona benissimo.
La mia domanda è: cosa succede se creo i miei Outline Box in modo dinamico e non ho una variabile assegnata?
Come faccio a fare riferimento a questa Outline Box senza variabile? Qualcosa che utilizzi le parole chiave "this" o "self".
Qualcosa del genere sulla seconda scatola:
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
);
Ci sono buoni esempi in Scripting Index per la funzione Set sul numero di Display Box:
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>Automazione e scripting</LINGO-LABEL></LINGO-LABS>Re: Come fare riferimento alla casella Outline dal menu del triangolo rosso senza usare variabiliNon credo che tu abbia funzionalità del genere per gli script del menu della casella di riepilogo, quindi devi usare qualcos'altro. Mi vengono in mente tre opzioni accettabili:
- Valutare il riferimento
- Utilizzare l'ambito della finestra
- Usa l'ambito Box
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: Come fare riferimento alla casella Outline dal menu del triangolo rosso senza usare variabiliSembra che nel mio caso le caselle Eval e Context funzionino, mentre Window non lo fa.
Ecco cosa ho usato per controllare, imita la creazione dinamica di Outline Boxes:
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
);Nel caso di Window, in entrambi i casi di Window1 e Window2, copia l'immagine della casella Window2.
Re: Come fare riferimento alla casella Outline dal menu del triangolo rosso senza usare variabiliPuoi usare una variabile più volte in uno script per assegnare valori diversi. Alla fine, la variabile conterrà l'ultimo valore. Questo vale per
x=5;
x=7;
show(x);
e per :ob1 .
La soluzione utilizza 2 variabili diverse per definire riferimenti a 2 oggetti diversi:
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: Come fare riferimento alla casella Outline dal menu del triangolo rosso senza usare variabiliStai sovrascrivendo i tuoi riferimenti nel tuo esempio di finestra (usa window:ob1 e window:ob2 per esempio). Questo non accade all'interno di context box perché box: sembra ricordare a quale context box appartiene. A seconda del tuo caso d'uso "reale" e dell'applicazione, il metodo di valutazione è solitamente il più robusto, ma tutti hanno i loro pro e contro (così come usare solo riferimenti diretti).
Re: Come fare riferimento alla casella Outline dal menu del triangolo rosso senza usare variabiliDifficile trovare maggiori dettagli, anche per gli LLM:
