Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Vamos A Hablar Sobre EVENTOS En Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Vamos A Hablar Sobre EVENTOS En Gambas 
 
En este hilo vamos ha hablar sobre los Eventos en gambas, y subiremos algunos ejemplos.

Enlaces de interes:

http://es.wikipedia.org/wiki/Progra...ida_por_eventos
http://www.monografias.com/trabajos...ogeventos.shtml
http://www.gambasdoc.org/help/cat/event?es

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Hola

Creo que este enlace también puede interesar (sin haber comprobado los que adjunta Julio).

http://www.gambas-es.org/viewtopic.php?p=11820#p11820

Ahora no tengo acceso a un PC con linux, o sea, que no puedo probar si funciona. No recuerdo si ese código es de gambas2 o gambas3.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Viendo el ejemplo de jguardon, se me ha ocurrido hacer otro.

Se trata de una clase "Peloton", que tiene un evento "ataque". Lo quiero usar para cuando se utilize el método "SiendoAtacado()", salte ese evento y que otras clases ("ControlTropas" y "serviciosSanitarios") sean informados "directamente" por el evento. (la idea de propagación del evento por toda la aplicación)


El problema que me da es el siguiente:
Parece que solo puedo "enlazar" un observador. Con lo cual aunque lo intente añadirlo a las dos clases, solo la última se le añade.


Os adjunto el código por si veis como se puede solucionar (si es que hay solución).



Nota:
Usando el patron Observer, si hay solución a este problema, pero queria ver si gambas lo hacia más simple de resolver. Enlace donde explico el patrón Observador: Enlace
pantallazo_estructura_patron_observer
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Miercoles, 10 Septiembre 2014, 20:58; editado 3 veces 
Editado por jsbsan, Martes, 08 Julio 2014, 18:31: Añado enlace, donde explicaba patrón observador
Editado por jsbsan, Miercoles, 10 Septiembre 2014, 20:58: Añado el codigo definitivo corregido y que funciona bien
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Interesante Julio. Lo  bajo en casa y lo veo esta tarde.

Saludos
 




===================
Gambas Básico
“Lo mejor de los booleanos es que si te equivocas estás a un solo bit de la solución correcta. Anónimo."
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Hola!.

Para comenzar a entender el uso de eventos deberíamos empezar con ejemplos sencillos e ir progresivamente avanzando.
Me gusta el ejemplo de Julio, pero se me complica un poco.  
No quisiera usar un patrón para solucionar el problema.

Este ejemplo que voy a subir no es nuevo, es algo que puede que ya se haya visto.
Aprendamos con cosas sencillas y vayamos a más. Podemos modificar este ejemplo y hacerlo de otra manera.
O crear pequeños ejemplos con los que entender más fácilmente.

En el ejemplo que os muestro. Se hace click cinco veces en un botón y se dispara el evento, luego se resetea el contador
y vuelve a comenzar.

En el formulario solo existe un botón, el código de FMain es:

Private MiClase As ClsElemento

Public Sub _new()

End

Public Sub Form_Open()
  Me.Center
  MiClase = New ClsElemento As "MiObservador"
End

Public Sub btnIniciar_Click()

  MiClase.Llamada()

End

Public Sub MiObservador_MiEvento(Data As String)
  
  Message.Info(Data)
  
End
 


Y el código de la clase ClsElemento es:

Event MiEvento(Data As String)

Private contador As Integer

Public Sub Llamada()
  
  'Incrementamos el contador
  contador += 1
  If contador >= 5 Then
    'Si el valor es 5 disparamos el evento
    Raise MiEvento("Contador vale 5")
    'Y restauramos el contador
    contador = 0
  Endif
  
End
 


Como veis es muy sencillo para comenzar a entender la creación de un evento.

¿ Cambias el ejemplo y añadís mas características o creamos uno nuevo ?.

Por cierto, se ha creado un manejador de eventos llamados MiObservador, pero no hay una variable declarada Observador.
Mas que observador, ¿ no debería ser "MiManejador" ?.

Aunque puede que Observador y Evento os suene parecido no lo son.

Saludos
 




===================
Gambas Básico
“Lo mejor de los booleanos es que si te equivocas estás a un solo bit de la solución correcta. Anónimo."
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Shell:

Citar:
por cierto, se ha creado un manejador de eventos llamados MiObservador, pero no hay una variable declarada Observador. Mas que observador, ¿ no debería ser "MiManejador" ?.


He hecho esta pequeña modificación a tu código:
Public Sub Form_Open()
  
  Me.Center
  MiClase = New ClsElemento ' As "MiObservador"
  
  Object.Attach(MiClase, Me, "MiObservador") 'asocio el objeto a mi observador.
  
End

La sintansis que he usado (object.attach) es similar a poner "As MiObservador", y el programa funciona igualmente.

Creo que es lo mismo, aunque lo hago de distinta forma. Al final lo que hace es que añadir el objeto MiClase al observador del Formulario (tanto en mi forma como en la tuya)

De todos modos mi pregunta sigue en el aire: ¿es posible asociar a varios observadores un mismo objeto?    
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 08 Julio 2014, 21:05; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Quisiera dar el mi pequeño aporte, señalando esta breve pagina del WIKI de www.gambas-it.org:

http://www.gambas-it.org/wiki/index.php?title=Gli_eventi
 



 
última edición por vuott el Martes, 08 Julio 2014, 23:35; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Gracias Julio, lo modifiqué directamente.

Vuott:

Toda información sobre gambas es interesante.

 informatico5

Saludos
 




===================
Gambas Básico
“Lo mejor de los booleanos es que si te equivocas estás a un solo bit de la solución correcta. Anónimo."
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Amigos:

Solución encontrada para el siguiente problema:
Citar:
Se trata de una clase "Peloton", que tiene un evento "ataque". Lo quiero usar para cuando se utilize el método "SiendoAtacado()", salte ese evento y que otras clases ("ControlTropas" y "serviciosSanitarios") sean informados "directamente" por el evento. (la idea de propagación del evento por toda la aplicación)


Gracias a Benoit, he dado con la solución de como se hace debe de hacer. Os dejo el ejemplo resuelto para que os lo podais descargar.

El problema era que estaba haciendo mal la asignación del nombre del evento:

Object.Attach(p, Me, "observadorControl") ' <- incorrecto
 ObservadorControl = New Observer(p) As "ObservadorControl" '<- correcto !!


Por lo tanto, a la pregunta ¿es posible asociar a varios observadores un mismo objeto?
La respuesta es que SI
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 05 Agosto 2014, 00:14; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Vamos A Hablar Sobre EVENTOS En Gambas 
 
Gracias Julio.

Habrá que crear más ejemplos con manejadores de eventos y observadores, que parecen ir muy parejos.  
Eso de tener mas de un observador un objeto parece interesante para jugar con ello.

Saludos
 




===================
Gambas Básico
“Lo mejor de los booleanos es que si te equivocas estás a un solo bit de la solución correcta. Anónimo."
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Hablar Todavía Es Gratis: Ni Idea Sobre L... fabianfv General 5 Jueves, 02 Febrero 2012, 16:31 Ver último mensaje
fabianfv
No hay nuevos mensajes Consulta Sobre Componentes Al Migrar Progr... drdr15 Controles/Librerías/Componentes 2 Miercoles, 24 Abril 2013, 20:01 Ver último mensaje
jsbsan
No hay nuevos mensajes Sobre La Jerarquia De Gambas pikas Controles/Librerías/Componentes 2 Domingo, 08 Abril 2012, 20:58 Ver último mensaje
pikas
No hay nuevos mensajes Lugares Sobre Gambas Shell General 4 Sabado, 24 Diciembre 2016, 13:57 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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
No puede descargar archivos
No puede publicar eventos en el calendario