** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - error WithEvents
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

error WithEvents

 Responder Responder
Autor
Mensaje
VayaCaló Ver desplegable
Habitual
Habitual


Unido: 16/Septiembre/2008
Localización: España
Estado: Sin conexión
Puntos: 147
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VayaCaló Cita  ResponderRespuesta Enlace directo a este mensaje Tema: error WithEvents
    Enviado: 20/Mayo/2022 a las 11:54
Saludos,

He creado un Modulo de clase para obtener los eventos de una serie de textbox de un subformulario "FormularioSub"

o sea: FormularioPrincipal.Sec1.SourceObject = "FormularioSub" 
donde Sec1 es la denominación del control que contiene el FormularioSub

En el modulo del subformulario "FormularioSub" declaro:

Private m_oCollectionOfEventHandlers As Collection

y al evento Form_Load() ejecuto:

 Set m_oCollectionOfEventHandlers = New Collection
    Dim oControl As Control
    For Each oControl In Me.Controls
        If TypeName(oControl) = "TextBox" Then
            Dim oEventHandler As TextboxEventHandler
            Set oEventHandler = New TextboxEventHandler
            Set oEventHandler.iTextbox = oControl
            m_oCollectionOfEventHandlers.Add oEventHandler
        End If
    Next oControl

que recorre cada uno de los textbox del subformulario agregandolos a la colección del modulo de clase 
para que se dispare el evento general GotFocus() de cada uno de los textbox.

Hasta aquí todo funciona muy bién.

Por necesidad del funcionamiento he de modificar el subformulario "FormularioSub" en tiempo de ejecución y para ello uso la siguiente estructura de trabajo:

- Creo un formulario, sus controles, modulo y nuevo RecordSource por programación, que denomino 
  "FormularioSub1"

- Modifico por programación el sourceobject del formulario principal de:
        formularioPrincipal.Sec1.SourceObject = "FormularioSub"   
     a formularioPrincipal.Sec1.SourceObject = "FormularioSub1"

y aunque al cambiar de uno a otro ejecuta el evento Form_Load del nuevo "FormularioSub1" sin embargo no ejecuta los eventos gotFocus() de los textbox.

Aclaro que cuando cambio de uno a otro descargo la colección :

Private Sub Form_Unload(Cancel As Integer)
     Set m_oCollectionOfEventHandlers = Nothing
End Sub

¿ Alguna idea sobre porque no ejecuta el código la segunda vez?


NOTA:  

Para verificar  he creado un boton de comando provisional en el formularioPrincipal que al pulsar efectua una llamada a:   Form_FormularioSub1.Form_Load,  y efectivamente ahora funciona. Pero claro no es asi como quiero que funcione, ya que dejo en manos del operador que pulse el botón de comando y deberia de ser ejecutado automaticamente al cambiar de un subformulario a otro.





Editado por VayaCaló - 20/Mayo/2022 a las 12:25
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable