2011-03-31 23 views
6

Ci sono molti modi in cui l'utente può attivare un'azione (TAction): tasti di scelta rapida, pulsante della barra degli strumenti, pulsante menu popup ecc. È possibile ottenere informazioni come è stata attivata l'azione?In quale modo è stato attivato TAction?

Sto solo pensando all'implementazione del registro delle attività per capire i modi più comuni per utilizzare diverse funzionalità nella GUI.

aggiornamento

ho bisogno di raccogliere alcune statistiche circa come un utente di interagire con interfaccia grafica dell'applicazione.

Non è consigliabile creare un'azione separata per ogni pulsante solo perché è necessario implementare la registrazione. La risposta di Ulrich Gerhardt sembra adeguata. Posso assegnare un gestore all'evento TActionList.OnExecute e scrivere il log da un posto.

+3

Se vuoi sapere che il tuo design è rotto –

+3

Ammiro la tua capacità telepatica di riconoscere un design di un'applicazione sconosciuta. –

+1

Se si desidera che un pulsante si comporti diversamente dal clic di un menu, è un'azione diversa. –

risposta

11

Forse è possibile utilizzare ActionComponent:

Usa ActionComponent discernere che componente client causato questa azione per eseguire. Ad esempio, esaminare ActionComponent da un gestore eventi OnExecute se è necessario sapere quale azione utente ha attivato questa azione.

Quando l'utente fa clic su un controllo client, che client imposta ActionComponent prima di chiamare l'azione Execute metodo. Dopo l'esecuzione dell'azione, l'azione reimposta ActionComponent su nil (Delphi) o NULL (C++).

C'è anche TApplication.OnActionExecute, TActionList.OnExecute e probabilmente più "ganci".

+0

Grazie, ho dimenticato quella proprietà. Si adatta quasi completamente alle mie esigenze. Ma per quanto riguarda i tasti di scelta rapida? Quale valore verrebbe assegnato a ActionComponent in questo caso? –

+0

I tasti di scelta rapida non sono sempre associati a un componente; Windows e/o Delphi possono generarli per te. Spiegaci perché ne hai bisogno e possiamo aiutarti a progettare la tua app in modo migliore. –

+2

Difficile individuare i diversi modi in cui un'azione può essere invocata dalla tastiera. Potrebbe essere scorciatoia. Potrebbe essere un acceleratore. Potrebbe essere la navigazione con i tasti cursore/scheda. –

Problemi correlati