So verweisen Sie aus dem roten Dreieckmenü auf die Gliederungsbox, ohne Variablen zu verwendenHier ist ein überarbeitetes Beispiel aus dem 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
);
Es fügt im roten Dreieckmenü ein Menüelement hinzu, das das Bild dieser Box in den Puffer kopiert.
Das Skript funktioniert einwandfrei.
Meine Frage ist: Was passiert, wenn ich meine Gliederungsfelder dynamisch erstelle und ihnen keine Variable zugewiesen habe?
Wie verweise ich auf diese Outline-Box ohne Variable? Irgendwas mit den Schlüsselwörtern „this“ oder „self“.
Auf der zweiten Box etwa so:
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
);
Im Scripting Index finden Sie gute Beispiele für die Set-Funktion für die Anzahl der Anzeigefelder:
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>Automatisierung und Skripting</LINGO-LABEL></LINGO-LABS>Betreff: Wie referenziere ich eine Gliederungsbox aus dem roten Dreieckmenü heraus, ohne Variablen zu verwenden?Ich glaube nicht, dass Sie eine solche Funktionalität für Outline-Box-Menüskripte haben, also müssen Sie etwas anderes verwenden. Drei okee-Optionen fallen mir ein:
- Bewerten Sie die Referenz
- Fensterbereich verwenden
- Verwenden Sie den Box-Bereich
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
);Betreff: Wie referenziere ich eine Gliederungsbox aus dem roten Dreieckmenü heraus, ohne Variablen zu verwenden?Sieht so aus, als ob die Eval- und Context-Box-Methoden in meinem Fall funktionieren, Window hingegen nicht.
Folgendes habe ich zur Überprüfung verwendet, es imitiert die dynamische Erstellung von Umrissfeldern:
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
);Im Fall von Fenster wird sowohl in Fenster1 als auch in Fenster2 das Bild der Box von Fenster2 kopiert.
Betreff: Wie referenziere ich eine Gliederungsbox aus dem roten Dreieckmenü heraus, ohne Variablen zu verwenden?Sie können eine Variable mehrfach in einem Skript verwenden, um ihr unterschiedliche Werte zuzuweisen. Am Ende enthält die Variable den letzten Wert. Dies gilt für
x=5;
x=7;
show(x);
und für :ob1 .
Die Lösung verwendet zwei verschiedene Variablen, um Verweise auf zwei verschiedene Objekte zu definieren:
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")
)
)
);
Betreff: Wie referenziere ich eine Gliederungsbox aus dem roten Dreieckmenü heraus, ohne Variablen zu verwenden?Sie überschreiben Ihre Referenzen in Ihrem Fensterbeispiel (verwenden Sie beispielsweise window:ob1 und window:ob2). Dies geschieht nicht innerhalb des Kontextfelds, da box: sich anscheinend merkt, zu welchem Kontextfeld es gehört. Abhängig von Ihrem „echten“ Anwendungsfall und Ihrer Anwendung ist die Auswertungsmethode normalerweise die robusteste, aber alle diese Methoden haben ihre Vor- und Nachteile (wie auch die Verwendung direkter Referenzen).
Betreff: Wie referenziere ich eine Gliederungsbox aus dem roten Dreieckmenü heraus, ohne Variablen zu verwenden?Weitere Details sind schwer zu finden – selbst für LLMs:
