Liste des boîtes à boutons : sur quel bouton ai-je cliqué ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je crée une liste alignée de boîtes de boutons dans une fenêtre (je ne sais pas combien il y en aura jusqu'à ce que le script soit réellement exécuté), comme indiqué ci-dessous.Évidemment, lorsque je clique sur l’un des boutons, j’en ai besoin pour effectuer une action.Cette action dépendra cependant du numéro du bouton - j'ai donc besoin de savoir sur quel bouton j'ai cliqué... et à moins que j'oublie quelque chose d'évident, je ne vois pas de moyen simple de le déterminer.Quelqu'un peut-il me dire comment faire, s'il vous plaît ?
Expr_Do_Something = expression ( /* Que puis-je taper ici pour me dire sur quel bouton j'ai appuyé ? */ ) ;
lubrifier = boîte de programmation ( ncol ( 4 )) ;
pour ( je = 1 , je <= 12 , je ++, lubrifier << ajouter ( Boîte à boutons ( "Bouton " || carboniser ( je ) , Expr_Do_Something )) ) ;
maintenant = nouvelle fenetre ( "Test" , lubrifier ) ;
Malheureusement, il y a des raisons pour lesquelles je ne peux pas faire cela avec un contrôle différent comme une zone de liste déroulante, qui renverrait simplement l'élément que je sélectionne.Il me semble que ce dont j'ai vraiment besoin, c'est de quelque chose comme une commande "Current Active Button() << obtenir le nom du bouton", mais je suppose qu'il n'y en a pas - ai-je raison ?
Merci beaucoup pour toutes les suggestions reçues.
[Note de bas de page : je viens de repérer une discussion connexe entre "Volf", "Stig" et moi-même il y a quelques années, ce qui pourrait bien aider à résoudre ce problème. https://communities.sas.com/message/42855#42855 , mais je laisserai quand même la question ouverte au cas où il y aurait d'autres approches à ce sujet]
Le message a été édité par : David Q/R
Re : Liste des boutons - sur quel bouton viens-je de cliquer ?J'ajouterais une affectation de variable avant d'appeler expr_do_something. Ensuite, dans expr_do_something, je vérifierais cette variable.
Expr_Faire_Quelque_chose= expr(/* Que puis-je taper ici pour me dire sur quel bouton j'ai appuyé ? */);
le= lineupbox(sous-officier(4));
pour(i=1, i<=12, i++,lub << append ( Boîte à boutons ( "Bouton " || carboniser ( i ) , which_button = i; Expr_Do_Something )));
nw = nouvelle fenêtre ( "Test" , ou ) ;
Re : Liste des boutons - sur quel bouton viens-je de cliquer ?Je m'attends à ce que which_button soit le même (13 dans ce cas) quel que soit le bouton sur lequel on clique.
Bien que je « sente » qu'il devrait y avoir un moyen plus simple, la seule solution que j'ai trouvée pour fonctionner est via une manipulation de chaîne et une analyse du lub<
Faire_Quelque_chose = "print(lub[Boîte à boutons(^i^)]< ;
lub = Boîte de composition ( N Col ( 4 ) ) ;
Pour ( i = 1 , i <= 12 , i ++,
Évaluer (
Analyser (
"lub << append( Bouton Box( \!"Bouton " || Carboniser ( i ) || "\!"" || ", " ||
Évaluer l'insertion ( Faire_quelque_chose ) || "))"
)
)
);
nw = Nouvelle fenêtre ( "Test" , ou ) ;
Re : Liste des boutons - sur quel bouton viens-je de cliquer ?Je m'en doutais, et je finirai presque certainement par faire quelque chose de similaire. Je résous souvent ce genre de problèmes en les mettant sous forme de texte, puis en les analysant. C'est donc rassurant de savoir que je ne passe pas à côté d'une évidence.
Merci beaucoup!
Re: Liste des boutons - Sur quel bouton ai-je cliqué ?Je ne suis pas sûr que cela soit encore pertinent pour vous, mais je pense avoir trouvé une façon plus simple de régler ce problème :
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)))));