Cómo llamar a una función pública desde un formulario para aplicarla en otro formulario

Te cuento lo que necesito hacer. Tengo dos formularios abiertos: uno llamado MenuPrincipal, y otro llamado Configuracion, que lo abro desde el MenuPrincipal sin cerrar este. En el formulario de Configuracion puedo seleccionar el color de fondo de los formularios. Sin embargo, al cerrar el formulario Configuracion, y volver al MenuPrincipal, no me lo aplica. ¿La razón? La función pública de AplicarDiseño la aplica únicamente en el evento Form_Open. Así que me gustaría llamar desde el formulario Configuracion que aplique esa función al formulario MenuPrincipal. No sé si me explico.

He buscado información, y probado lo siguiente:

Call Forms(FMenuPrincipal).AplicarDiseño

Pero me da el error 2465 de error definido por la aplicación o el objeto.

¿Sabes cómo puedo ponerlo para que funcione? Si es que se puede, claro. O bien se te ocurre otra alternativa.

Ya sé que podría abrir y cerrar los formularios al moverme entre ellos, pero tengo otras funciones públicas en el MenuPrincipal en el evento Open_Form que solo quiero que se inicien únicamente cuando arranco la base de datos.

2 Respuestas

Respuesta
1

Prueba una cosa, aunque no se si te funcionará porque con access me pierdo.

Haz click en el formulario, selecciona propiedades y busca la opción ShowModal. Si está en true ponlo en false y pruebas así a ver que tal.

Salu2

Está en false. He probado a ponerlo true, y da error. Me da a mí que el problema está en la sintaxis.

Muchas gracias de todas formas.

Lo siento amigo, se me escapa a mis conocimientos.

Respuesta
1

La opción Forms("xxxx"). AplicarDiseño solo te funcionará si en el módulo asociado al formulario xxxx tienes un procedimiento sub (que no function) que se llame AplicarDiseño. En otro caso te dará un error.

Además, veo que no pones entre comillas el nombre del formulario, lo que te origina el error que comentas. Si no lo haces así, buscará el valor de una variable llamada FMenuPrincipal, que intuyo que no existe...

Si en tu ¿Función? Aplicas cambios de diseño en tiempo de ejecución, quizás lo resuelvas haciendo un repaint, refresh, o requery al formulario Menu, cosa que puedes hacer desde el formulario de configuración:

Forms("FMenuPrincipal"). Repaint

Prueba y me dices

No funciona. He estado probando, y lo he resuelto de otra forma. Desde el formulario Configuracion, al cerrarlo, derivo el foco a un botón del formulario MenuPrincipal. Y ya ahí, sí, le puedo poner que llame a la función AplicarDiseño (que está en un módulo estándar), en el evento GotFocus.

Muchas gracias.

Pues genial que lo hayas solucionado.

La pregunta no admite más respuestas

Más respuestas relacionadas