2011-03-31 12 views
6

Hay muchas maneras en que el usuario puede desencadenar una ejecución de acción (TAction): teclas de método abreviado, botón de la barra de herramientas, botón del menú emergente, etc. ¿Es posible obtener información cómo se activó esa acción?¿De qué manera se ha disparado TAction?

Estoy pensando en la implementación del registro de actividad para descubrir las formas más populares de utilizar diferentes funciones en la GUI.

actualización

que necesito para recoger algunas estadísticas sobre cómo un usuario interactúa con la interfaz gráfica de la aplicación.

No es la mejor idea crear una acción separada para cada botón solo porque necesita implementar el registro. La respuesta de Ulrich Gerhardt parece adecuada. Puedo asignar un controlador al evento TActionList.OnExecute y escribir el registro desde un lugar.

+3

Si quiere saber esto, su diseño está roto –

+3

Admiro su capacidad telepática para reconocer un diseño de aplicación desconocido. –

+1

Si desea presionar un botón para comportarse de manera diferente a un clic en el menú, esa es una acción diferente. –

Respuesta

11

Tal vez se puede utilizar ActionComponent:

Uso ActionComponent a discernir qué componente cliente causó esta acción a ejecutar . Por ejemplo, examine ActionComponent desde un controlador de eventos OnExecute si necesita saber qué acción de usuario activó esta acción.

Cuando el usuario hace clic en un control de cliente, que cliente establece ActionComponent antes de llamar de la acción Ejecutar método. Después de que se ejecuta la acción, la acción restablece ActionComponent a cero (Delphi) o NULL (C++).

También hay TApplication.OnActionExecute, TActionList.OnExecute y probablemente más "ganchos".

+0

Gracias, me olvidé de esa propiedad. Se adapta casi por completo a mis necesidades. Pero ¿qué pasa con las teclas de acceso directo? ¿Qué valor se le asignaría a ActionComponent en este caso? –

+0

Las teclas de método abreviado no siempre están ligadas a un componente; Windows y/o Delphi pueden generarlos para usted. Explíquenos por qué lo necesita y podemos ayudarlo a diseñar su aplicación de una mejor manera. –

+2

Difícil de detectar las diferentes formas en que el teclado puede invocar una acción. Podría ser un atajo. Podría ser acelerador. Podría ser la navegación con las teclas de cursor/tabulación. –

Cuestiones relacionadas