Wie kann ich erreichen, dass ein Button-Box-Skript einen ausgewerteten Ausdruck hat?Hallo,
Ich versuche, eine automatisierte Hinzufügung von Schaltflächenfeldern zu erstellen, die per Skript auf einzelne Gliederungsfelder verweisen (z. B. mit Scrollfenster oder Schließen). Ich schaffe es, den Ausdruck mithilfe einer For-Schleife zu erstellen, die den Namen der Skriptelemente erfolgreich in die Liste einfügt. Wenn ich jedoch jedem Schaltflächenfeld ein eindeutiges Skript zuweisen möchte, verwenden sie stattdessen den Namen des Ausdrucks 'buttonclickexpr' als Skript.
Wie kann ich erreichen, dass das Skript im Ausdruck ausgewertet und korrekt als geschriebener Befehl eingefügt wird, der beim Anklicken der Schaltfläche ausgeführt wird?
//an example of how the window could appear
report_win=new window("test", content_VLB=V List Box(), Outline Box("Example: Distribution"), Outline Box("Example: Multivariate"));
//example of the variable that would store the name of scripts that created the OBs
script_new={"Distribution", "Multivariate", "Profiler"};
//the for loop to correctly setup the expression with the correct section name and add a button
For( i = 1, i <= N Items( script_new ), i++,
buttonclickexpr = Expr(
report_win << Scroll Window(
report_win[Outline Box( sectionName)]
)
);
Substitute Into( buttonclickexpr, Expr(sectionName), Char("Example: " ||script_new[i]) );
write(buttonclickexpr);
// Add a button to the list
content_VLB<
<APPEND></APPEND>
<BR />
<LINGO-LABS id="lingo-labs-914974" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatisierung und Skripterstellung</LINGO-LABEL>
</LINGO-LABS>
Betreff: Wie kann ich erreichen, dass ein Button-Box-Skript einen ausgewerteten Ausdruck hat?Sie können Eval(Eval Expr()) verwenden.
//an example of how the window could appear
report_win = New Window( "test",
content_VLB = V List Box(),
Scroll box (Size(20,1500)),
Outline Box( "Example: Distribution" ),
Scroll box (Size(20,1500)),
Outline Box( "Example: Multivariate" )
);
//example of the variable that would store the name of scripts that created the OBs
script_new = {"Distribution", "Multivariate", "Profiler"};
//the for loop to correctly setup the expression with the correct section name and add a button
For( i = 1, i <= N Items( script_new ), i++,
buttonclickexpr = Expr(
report_win << Scroll Window( report_win[sectionName ] );
Caption(sectionName)
);
Substitute Into( buttonclickexpr, Expr( sectionName ), Char( "Example: " || script_new[i] ) );
Write( buttonclickexpr );
// Add a button to the list
Eval (Eval Expr(content_VLB << append( Button Box( "Go to " || script_new[i], Expr(Name Expr(buttonclickexpr)))) ));
);
In OutlineBox("tag") ist "tag" der HelperKey der OutlineBox. Um über den Titel auf die Gliederungsbox zuzugreifen, können Sie den Titel direkt verwenden (ohne OutlineBox() ).
Einzelheiten finden Sie unter Re: Ausdrucksbehandlung in JMP: Tipps und Fallstricke
| verwenden |
|
| Name Expr() |
... to retrieve the expression that is stored in the name buttonclickexpr |
| Expr() |
... um den Code zu markieren, sodass Eval Expr() ihn finden kann. |
| Eval Expr() |
... um Expr() zu finden und auszuwerten |
| Eval() |
... um den gesamten Ausdruck nach den vorherigen Schritten auszuwerten. |
Betreff: Wie kann ich erreichen, dass ein Button-Box-Skript einen ausgewerteten Ausdruck hat?Ein alternativer Ansatz: Ersatz()
[bereits zur Anpassung des Buttonclickexpr verwendet *)]
Beide Stufen auf einer:
For each ({title}, script_new ,
myExpr = Expr(
content_VLB << append( Button Box( "Go to " || title,current report() << Scroll Window( current report()[_sectionName_ ] )));
);
Eval(Substitute (Name Expr(myExpr), Expr( _sectionName_ ), "Example: " || title ));
);
| verwenden |
|
| Ersatz() |
... ähnlich wie die Funktion „Ersetzen für Zeichenkette“ – aber denken Sie daran, dass die Argumente ausgewertet werden! Deshalb müssen Sie ... verwenden. |
| Name Expr() |
... um den Ausdruck abzurufen, der unter dem Namen mein Ausdruck gespeichert ist. - ohne es zu bewerten!!! |
| Expr() |
... to protect _sectionName_ from getting evaluated |
| Eval() |
... um den gesamten Ausdruck nach den vorherigen Schritten auszuwerten. |
*) Außer bei Substitute. Ersetzen in() wertet sein erstes Argument nicht aus.