Mensajes Entre Modulo Y Formulario [Solucionado]


Objetivo: Mensajes Entre Modulo Y Formulario [Solucionado]
Hola, como seria la mejor forma de manejar mensajes entre los módulos y los formularios?
Explicación: en el ejemplo adjunto hay un formulario y un modulo, en el formulario un botón desencadena un evento click que llama al modulo, este hace la tarea de 0 a 10 y para cada "etapa" imprime en la consola un texto.
¿Como podría obtener ese texto para ponerlo en un label en el formulario sin tener que poner el label explícitamente en el código del módulo?

Saludos.

última edición por tincho el Jueves, 02 Junio 2016, 10:47; editado 1 vez

mensaje-0.0.1.tar.gz
Descripción: Ejemplo 
Descargar
Nombre del archivo: mensaje-0.0.1.tar.gz
Tamaño: 11.26 KB
Descargado: 29 veces
mensaje-0.0.1.tar.gz
Descripción: Ejemplo 
Descargar
Nombre del archivo: mensaje-0.0.1.tar.gz
Tamaño: 11.26 KB
Descargado: 29 veces
mensaje-0.0.1.tar.gz
Descripción: Ejemplo 
Descargar
Nombre del archivo: mensaje-0.0.1.tar.gz
Tamaño: 11.26 KB
Descargado: 29 veces

Perfil MP  
Objetivo: Re: Mensajes Entre Modulo Y Formulario
Para lo que tú quieres en ese ejemplo primero debes responderte una pregunta:
¿Por qué encargas la tarea del bucle a un módulo?
Si la tarea es propia del formulario, es decir es una tarea que precisa de un seguimiento gráfico, déjala en el formulario, no en el módulo. Con eso lo tienes solucionado.

Aún así si es una tarea que va a ser llamada desde varios formularios su sitio es el módulo, el de la tarea, pero el del control de lo que hace sigue siendo función de cada uno de los formularios.
Esto te obliga a dividir la tarea en dos: Por un lado la tarea específica, en el módulo y por otro su control gráfico, en el formulario.
Sería más o menos:
En el módulo
Public Function listFiles() As String

'... acciones propias del módulo y comunes a varios formularios
Return Format(Now(), "hh:nn:ss")

End


En el formulario:

Public Sub Button1_Click()

Dim intX As Integer

For intX = 0 To 10
TextLabel1.tex &= "Etapa " & Str(intx) & MFiles.Lisfiles() & gb.newline 'mejor le das más altura a texlabel1
Wait 1
Next

End

Perfil MP  
Objetivo: Re: Mensajes Entre Modulo Y Formulario
Citar:
Hola, como seria la mejor forma de manejar mensajes entre los módulos y los formularios?

En la respuesta anterior no te respondido a la pregunta genérica. La respuesta genérica es:
No hay una "mejor forma". Hay muchas y dependen de tu paradigma de programación (POO o Estructurada), de tu estilo de manejar los controles (encapsulación), etc.
¿Algunos ejemplos?

-Haciendo los controles del formulario públicos y modificandolos desde el módulo (quiebras el principio de encapsulación)
-Usando variables públicas que se modifican desde el módulo y se consultan y/o modifican desde el formulario (quiebra lo mismo que el principio anterior, pero menos)
-Usando ficheros temporales que almacenen los resultados de las operaciones y un watcher que los vigile y levante sus eventos
-Pasando a las funciones del módulo variables por referencia y comprobándolas con un timer en el formulario

etc. etc. etc.

Ya te digo no hay una mejor forma. Hay maneras "coherentes con tu estilo de programación". La tarea principal es definir ese estilo.

¿El mejor "estilo" para mí? Aquél que se ajusta lo más posible a la POO y sus principios.

Saludos.

Perfil MP  
Objetivo: Re: Mensajes Entre Modulo Y Formulario
Hola, Tincho.

Me resultó interesante tu ejercicio, ya que creí que lo faltaba era que pusieras un Return dentro del bloque For, pero esto hace que salga de la función. Por lo que me pregunté que tal si enviaba el control al modulo y ahora lo que no logro es que me salga una nueva línea... probé con "\n" y con "gb.NewLine". Te muestro lo que hice:

Public Function listFilesAlControl(cntForm As TextLabel)

Dim strTimer As String
Dim intX As Integer
cntForm.Text = ""
For intX = 0 To 10
strTimer = Format(Now(), "hh:nn:ss")
cntForm.text = cntForm.text & gb.NewLine & strTimer
Wait 1
Next

End


Eso en el módulo en el FMain puse esto en tu evento click

MFiles.listFilesAlControl(TextLabel1)


Espero que te sirva para encaminarte mejor.

Saludos...

PS: Ahora voy leer con atención lo que dice Shordi...

Perfil MP  
Objetivo: Re: Mensajes Entre Modulo Y Formulario
Shordi:


Citar:
-Usando ficheros temporales que almacenen los resultados de las operaciones y un watcher que los vigile y levante sus eventos

¿como se hace eso?

Objetivo: Re: Mensajes Entre Modulo Y Formulario
jsbsan escribió: [Ver mensaje]
Shordi:


Citar:
-Usando ficheros temporales que almacenen los resultados de las operaciones y un watcher que los vigile y levante sus eventos

¿como se hace eso?

Bueno... te abro otro hilo y te lo cuento en un ratito.

Perfil MP  
Objetivo: Re: Mensajes Entre Modulo Y Formulario
Gracias a todos por su aporte.
Finalmente he adaptado el ejemplo con la idea de vicr que me pareció muy buena por cierto.

Aquí lo dejo por si a alguien le interesa.


mensaje-0.0.3.tar.gz
Descripción: Adapatacion basada en la idea de vicr de pasar el control como parámetro. 
Descargar
Nombre del archivo: mensaje-0.0.3.tar.gz
Tamaño: 11.74 KB
Descargado: 21 veces
mensaje-0.0.3.tar.gz
Descripción: Adapatacion basada en la idea de vicr de pasar el control como parámetro. 
Descargar
Nombre del archivo: mensaje-0.0.3.tar.gz
Tamaño: 11.74 KB
Descargado: 21 veces
mensaje-0.0.3.tar.gz
Descripción: Adapatacion basada en la idea de vicr de pasar el control como parámetro. 
Descargar
Nombre del archivo: mensaje-0.0.3.tar.gz
Tamaño: 11.74 KB
Descargado: 21 veces

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4237s (PHP: -80% SQL: 180%)
Consultas SQL: 48 - Debug off - GZIP Activado