Activación de eventos de nivel de aplicación

AutoCAD ActiveX

 
Activación de eventos de nivel de aplicación
 
 
 

Para poder utilizar eventos del nivel de aplicación es necesario crear un nuevo módulo de clase y declarar un objeto del tipo AcadApplicacion con eventos. Por ejemplo, suponga que se ha creado un módulo de clase nuevo denominado ModuloEventoClase. La nueva clase contiene la declaración de la aplicación con la palabra clave de VBA WithEvents.

Para crear una clase nueva y declarar un objeto Application con eventos

  1. En VBA IDE, inserte un módulo de clase. En el menú Insertar, elija Módulo de clase.
  2. En la ventana Proyecto, elija el módulo de clase que acaba de insertar.
  3. En la ventana Propiedades, cambie el nombre de la clase por Modulo­EventoClase.
  4. Abra la ventana Código de la clase utilizando F7 o elija Código en el menú Ver.
  5. En la ventana de código de la clase, añada la siguiente línea:
Public WithEvents App As AcadApplication

Después de declararlo, el nuevo objeto con eventos aparece en la lista desplegable de objetos del módulo de clase. Ahora puede escribir procedimientos de evento para el nuevo objeto del módulo de clase. Al seleccionar el nuevo objeto en la lista de objetos, los eventos válidos para dicho objeto aparecerán en la lista desplegable de procedimientos.

Antes de ejecutar los procedimientos, debe conectar el objeto declarado del módulo de clase con el objeto Application. Para ello, puede utilizar el siguiente código desde cualquier módulo.

Para conectar el objeto declarado con el objeto Application

  1. En la ventana Código del módulo principal, añada la siguiente línea a la sección de declaraciones:
    Dim X As New EventClassModule
  2. En la misma ventana, añada la siguiente subrutina:
    Sub InitializeEvents()
    Set X.App = ThisDrawing.Application
    End Sub
  3. En el código del módulo principal, añada una llamada a la subrutina InitializeEvents:
    Call InitializeEvents

Después de ejecutar el procedimiento InitializeEvents, el objeto App del módulo de clase señala al objeto Application especificado y los procedimientos de evento del módulo de clase se ejecutan siempre que se activa el evento.

Solicitud para continuar cuando se arrastra y suelta un dibujo en AutoCAD

Este ejemplo intercepta el proceso de carga cuando se arrastra un archivo y se suelta en AutoCAD. Se muestra un cuadro de mensaje que contiene el nombre del archivo y los botones Sí, No y Continuar, los cuales permiten al usuario decidir si el archivo debe seguir cargándose o visualizándose. Si el usuario elige cancelar la operación, esta decisión se devuelve mediante el parámetro Cancel del evento BeginFileDrop y el archivo no se carga.

Public WithEvents ACADApp As AcadApplication
      
Sub Example_AcadApplication_Events()
 ' This example intializes the public variable (ACADApp)
 ' which will be used to intercept AcadApplication Events
 '
 ' Run this procedure FIRST!
      
 ' We could get the application from the ThisDocument
 ' object, but that would require having a drawing open,
 ' so we grab it from the system.
 Set ACADApp = GetObject(, "AutoCAD.Application.17")
End Sub
      
Private Sub ACADApp_BeginFileDrop _
 (ByVal FileName As String, Cancel As Boolean)
 ' This example intercepts an Application BeginFileDrop event.
 '
 ' This event is triggered when a drawing file is dragged
 ' into AutoCAD.
 '
 ' To trigger this example event:
    ' 1) Make sure to run the example that initializes
 ' the public variable (named ACADApp) linked to this event.
 '
 ' 2) Drag an AutoCAD drawing file into the AutoCAD
 ' application from either the Windows Desktop
 ' or Windows Explorer
      
 ' Use the "Cancel" variable to stop the loading of the
 ' dragged file, and the "FileName" variable to notify
 ' the user which file is about to be dragged in.
      
 If MsgBox("AutoCAD is about to load " & FileName & vbCrLf _
 & "Do you want to continue loading this file?", _
 vbYesNoCancel + vbQuestion) <> vbYes Then
 Cancel = True
 End If
End Sub