Button-Box-Liste – auf welchen Button habe ich gerade geklickt?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich erstelle eine aufgereihte Liste von Schaltflächenfeldern innerhalb eines Fensters (ich weiß nicht, wie viele davon es sein werden, bis das Skript tatsächlich ausgeführt wird), wie unten gezeigt.Wenn ich auf eine der Schaltflächen klicke, benötige ich diese natürlich, um eine Aktion auszuführen.Diese Aktion hängt jedoch von der Nummer der Schaltfläche ab – ich muss also wissen, auf welche Schaltfläche ich geklickt habe … und wenn ich nicht etwas Offensichtliches übersehe, kann ich das nicht einfach feststellen.Kann mir bitte jemand sagen, wie ich das machen kann?
Expr_Do_Something = Ausdruck ( /* Was kann ich hier eingeben, um zu erfahren, welche Taste ich gedrückt habe? */ ) ;
lub = Aufstellungsbox ( ncol ( 4 )) ;
für ( ich = 1 , ich <= 12 , ich ++, lub << anhängen ( Button-Box ( "Taste " || verkohlen ( ich ) , Expr_Do_Something )) ) ;
jetzt = neues Fenster ( "Prüfen" , lub ) ;
Leider gibt es Gründe, warum ich dies nicht mit einem anderen Steuerelement wie einem Kombinationsfeld tun kann, das einfach das von mir ausgewählte Element zurückgeben würde.Es scheint mir, dass ich wirklich so etwas wie den Befehl „Current Active Button() << get button name“ brauche, aber ich gehe davon aus, dass es keinen gibt – habe ich recht?
Vielen Dank für alle eingegangenen Vorschläge.
[Fußnote: Ich habe gerade eine ähnliche Diskussion zwischen „Volf“, „Stig“ und mir vor ein paar Jahren entdeckt, die hier durchaus hilfreich sein könnte https://communities.sas.com/message/42855#42855 , aber ich lasse die Frage trotzdem offen, falls es hierzu noch andere Ansätze gibt]
Die Nachricht wurde bearbeitet von: David Q/R
Betreff: Button-Box-Liste – auf welchen Button habe ich gerade geklickt?Ich würde vor dem Aufruf von expr_do_something eine Variablenzuweisung hinzufügen. Innerhalb von expr_do_something würdest du dann diese Variable überprüfen.
Ausdruck_Tu_etwas= Ausdruck(/* Was kann ich hier eingeben, um zu erfahren, welche Taste ich gedrückt habe? */);
Die= Aufstellungsbox(ncol(4));
für(i=1, i<=12, i++,lub << anhängen ( Knopfbox ( "Button" || verkohlen ( i ) , which_button = i; Ausdruck_Tu_etwas )));
nw = neues Fenster ( "Prüfen" , oder ) ;
Betreff: Button-Box-Liste – auf welchen Button habe ich gerade geklickt?Ich erwarte, dass which_button immer derselbe ist (in diesem Fall 13), unabhängig davon, auf welche Schaltfläche geklickt wird.
Obwohl ich das Gefühl habe, dass es einen einfacheren Weg geben sollte, ist die einzige Lösung, die ich zum Laufen gebracht habe, die Manipulation von Zeichenfolgen und das Parsen des lub<
Tu_Etwas = "drucken(lub[Buttonbox(^i^)]< ;
lub = Aufstellungsfeld ( N Spalte ( 4 ) ) ;
Für ( i = 1 , i <= 12 , i ++,
Auswerten (
Parsen (
"lub << anhängen( Button Box( \!"Button " || Verkohlen ( i ) || "\!"" || ", " ||
Eval-Einsatz ( Do_Something ) || "))"
)
)
);
nw = Neues Fenster ( "Prüfen" oder ) ;
Betreff: Button-Box-Liste – auf welchen Button habe ich gerade geklickt?Das habe ich schon vermutet – und mit ziemlicher Sicherheit werde ich am Ende etwas in der Art tun. Ich löse solche Probleme oft , indem ich sie als Text anlege und dann analysiere, daher ist es beruhigend zu wissen, dass ich nichts Offensichtliches übersehe.
Vielen Dank!
Betreff: Schaltflächenfeld-Liste – auf welche Schaltfläche habe ich gerade geklickt?Ich bin mir nicht sicher, ob das für Sie noch relevant ist, aber ich glaube, ich habe einen einfacheren Weg gefunden, dieses Problem zu lösen:
Expr_Do_Something = expr<STRONG>(</STRONG>this << Get Button Name() <STRONG>)</STRONG>;<BR />lub = lineupbox<STRONG>(</STRONG>ncol<STRONG><SPAN>(</SPAN><SPAN>4</SPAN><SPAN>))</SPAN></STRONG>;<BR />for(i=1, i<=12, i++, lub<< append(Button Box("Button "|| char(i), << set Function(Function({this}, Expr_Do_Something)))));