Elenco delle caselle dei pulsanti: su quale pulsante ho appena fatto clic?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto creando un elenco allineato di caselle di pulsanti all'interno di una finestra (non so quante ce ne saranno finché lo script non verrà effettivamente eseguito) come mostrato di seguito.Ovviamente quando clicco su uno qualsiasi dei pulsanti, ne ho bisogno per eseguire un'azione.Tale azione, tuttavia, dipenderà dal numero del pulsante, quindi devo sapere su quale pulsante ho fatto clic... e, a meno che non trascuri qualcosa di ovvio, non riesco a vedere un modo semplice per determinarlo.Qualcuno può dirmi come posso farlo, per favore?
Espr_Fai_Qualcosa = espressione ( /* Cosa posso scrivere qui per sapere quale pulsante ho premuto? */ ) ;
lub = lineupbox ( ncol ( 4 )) ;
per ( io = 1 , io <= 12 , io ++, lub << aggiungere ( Casella dei pulsanti ( "Pulsante" || car ( io ) , Espr_Fai_Qualcosa )) ) ;
ora = nuova finestra ( "Test" , lub ) ;
Sfortunatamente ci sono motivi per cui non posso farlo con un controllo diverso come una casella combinata, che restituirebbe semplicemente l'elemento selezionato.Mi sembra che ciò di cui ho veramente bisogno sia qualcosa come un comando "Pulsante attivo corrente() << ottieni nome pulsante", ma presumo che non ce ne sia uno - ho ragione?
Molte grazie per eventuali suggerimenti ricevuti.
[Nota a piè di pagina: ho appena notato una discussione correlata tra "Volf", "Stig" e me di un paio di anni fa che potrebbe essere d'aiuto in questo senso https://communities.sas.com/message/42855#42855 , ma lascerò comunque la domanda aperta nel caso in cui ci siano altri approcci a questo]
Il messaggio è stato modificato da: David Q/R
Re: Elenco dei pulsanti: su quale pulsante ho appena cliccato?Aggiungerei un'assegnazione di variabile prima di chiamare expr_do_something. Quindi, all'interno di expr_do_something, controllerei questa variabile.
Espr_Fai_Qualcosa= espr(/* Cosa posso digitare qui per sapere quale pulsante ho premuto? */);
IL= scaletta(ncol(4));
per(i=1, i<=12, i++,lub << append ( Scatola dei pulsanti ( "Pulsante " || carattere ( i ) , which_button = i; Expr_Do_Something )));
nw = nuova finestra ( "Test" , o ) ;
Re: Elenco dei pulsanti: su quale pulsante ho appena cliccato?Mi aspetto che which_button sia lo stesso (13 in questo caso) indipendentemente dal pulsante cliccato.
Sebbene "creda" che dovrebbe esserci un modo più semplice, l'unica soluzione che ho trovato è tramite la manipolazione di stringhe e l'analisi del lub<
Fai_qualcosa = "print(lub[Buttonbox(^i^)]< ;
lub = Box di formazione ( colonna N ( 4 ) ) ;
Per ( i = 1 , i <= 12 , i ++,
Valutazione (
Analizzare (
"lub << append( Pulsante Box( \!"Pulsante " || Char ( i ) || "\!"" || "," ||
Inserimento di valutazione ( Do_Something ) || "))"
)
)
);
nw = Nuova finestra ( "Test" , o ) ;
Re: Elenco dei pulsanti: su quale pulsante ho appena cliccato?Lo sospettavo anch'io, e quasi certamente finirò per fare qualcosa del genere. Mi capita spesso di risolvere problemi come questo impostandoli come testo e poi analizzandoli, quindi è rassicurante sapere che non mi sfugge nulla di ovvio.
Grazie molto!
Re: Elenco dei pulsanti: su quale pulsante ho appena cliccato?Non sono sicuro che questo sia ancora rilevante per te, ma credo di aver trovato un modo più semplice per affrontare questo problema:
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)))));