Directrices para los controladores de eventos

AutoCAD ActiveX

 
Directrices para los controladores de eventos
 
 
 

Es importante recordar que los eventos sólo proporcionan información sobre el estado o las actividades que tienen lugar en AutoCAD. Aunque pueden escribirse controladores de eventos que respondan a esos eventos, es frecuente que AutoCAD se encuentre procesando comandos cuando se activa el controlador de eventos. Los controladores de eventos, por tanto, tienen ciertas restricciones de seguridad en cuanto a su capacidad de actuación en combinación con AutoCAD y su base de datos.

  • No cree dependencias de la secuencia de eventos.

    Al escribir controladores de eventos, no confíe en que el orden de los eventos siga una secuencia exacta que considere lógica. Por ejemplo, si ejecuta un comando ABRIR, se activarán los eventos BeginCommand, BeginOpen, EndOpen y EndCommand. No obstante, es posible que no se produzcan en ese orden. La única secuencia de eventos en la que puede confiar es la de que un evento Begin se producirá antes que un evento End. En el ejemplo anterior los eventos pueden activarse en el orden siguiente: BeginCommand, BeginOpen, EndCommand, y EndOpen, o incluso BeginCommand, EndCommand, BeginOpen, y EndOpen.

  • No cree dependencias de la secuencia de operaciones.

    Si suprime objeto1 y, a continuación, objeto2, no confíe en recibir primero el evento ObjectErased del objeto1 y a continuación el del objeto2. Podría recibir en primer lugar el evento ObjectErased del objeto2.

  • No realice funciones interactivas desde un controlador de eventos.

    Intentar ejecutar funciones interactivas desde un controlador de eventos podría causar serios problemas ya que AutoCAD podría estar procesando un comando en el momento de activarse el evento. Es, por tanto, necesario evitar el uso de métodos de entrada-precisión como GetPoint, GetEntity, GetKeyword, etc., de operaciones con conjuntos de selección y del método SendCommand en los controladores de eventos.

  • No inicie cuadros de diálogo desde un controlador de eventos.

    Los cuadros de diálogo se consideran funciones interactivas y pueden interferir con la operación actual de AutoCAD. Los cuadros de mensaje y de advertencia no se consideran funciones interactivas y pueden iniciarse sin riesgos; sin embargo, generar un cuadro de mensaje en un controlador de eventos para los eventos BeginModal, EndModal, Activate, Deactivate y BeginRightClick puede producir una secuencia inesperada.

  • Puede escribir datos en cualquier objeto de la base de datos, excepto en el objeto que generó el evento.

    Cualquier objeto que activa un evento se puede abrir para utilizarlo con AutoCAD y con la operación que está actualmente en curso. Por tanto, no escriba información en un objeto desde un controlador de eventos del mismo objeto. La lectura de información desde el objeto que activa un evento puede realizarse sin ningún riesgo. Por ejemplo, suponga que tiene un suelo de baldosas y que crea un controlador de eventos asociado al borde del suelo. Si cambia el tamaño del suelo, el controlador de eventos añade o sustrae baldosas de forma automática para rellenar el área nueva. El controlador de eventos podrá leer el nuevo área del borde, pero no podrá realizar ningún cambio en él.

  • No realice ninguna acción desde un controlador de eventos que pueda activar el mismo evento.

    Si lleva a cabo la misma acción en un controlador de eventos que activa el mismo evento, creará un bucle infinito. Por ejemplo, no debe nunca intentar abrir un dibujo desde dentro del evento BeginOpen; AutoCAD continuaría abriendo más dibujos hasta que se alcanzara el número máximo de dibujos abiertos posible.

  • Recuerde que no pueden activarse eventos mientras AutoCAD está mostrando un cuadro de diálogo modal.