Como Generar Un Evento Creado Por Ti?


Objetivo: Como Generar Un Evento Creado Por Ti?
buenas,

estoy tratando de crear eventos en una clase pero no me sale...

esto es lo que he hecho....

' gambas class file

Export


Inherits UserControl

Event Abajo
Event Arriba




Private $Zona As DrawingArea


Public Sub _new()

$Zona = New DrawingArea(Me) As "Zona"

$Zona.Background = Color.Blue
$Zona.Cached = True
$Zona.X = 20
$Zona.y = 100
$Zona.Height = 100
$Zona.Width = 300
$Zona.Visible = True

$Zona.Show


End



Public Sub Zona_Arriba()

Print "abajo ñññññññññññ"

End

Public Sub Clic4_Arriba()

Print "Arriba zzzzzzzzzzz"

End


Public Sub Zona_DblClick()
Print "dobleclic"
Print Mouse.y

If Mouse.y < ($Zona.Height / 2) Then
Print "arriba ejecutado"
Raise Arriba
Else
Print "abajo ejecutado"
Raise Abajo
Endif

End


lo que estoy tratando de hacer es....

por medio de un drawingarea detectar si el usuario hizo clic de la mitad de la altura de mas arriba o de mas abajo,

lanzando el evento arriba si es menor a la altura dividido 2 o abajo si es mayor a la altura dividido 2.

hasta el lanzamiento del evento voy bien, la cuestión es... como es la sintaxis para la rutina del evento y lo que se ejecutara cuando el raise lance el evento???


prueba1-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba1-0.0.1.tar.gz
Tamaño: 17.21 KB
Descargado: 74 veces
prueba1-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba1-0.0.1.tar.gz
Tamaño: 17.21 KB
Descargado: 74 veces
prueba1-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba1-0.0.1.tar.gz
Tamaño: 17.21 KB
Descargado: 74 veces

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Hola v3ctor.

Bueno, hay mucho código sobrante. He eliminado lo sobrante para que veas como funciona.
Algo que te falta es el observador.

Por ejemplo supongamos que nuestra clase o componente (depende de lo que quieras hacer) va a heredar de DrawingArea.

El código de la clase Clic4 puede ser este:

' gambas class file

Export

Inherits DrawingArea

Event Abajo
Event Arriba

Private observador1 As Observer

Public Sub _new()

observador1 = New Observer(Me) As "Zona"

With Me
.Background = Color.Blue
.X = 20
.y = 20
.Height = 100
.Width = 300
End With

End

Public Sub Zona_Abajo()

Print "Se ejecuta el código del evento Abajo"

End

Public Sub Zona_Arriba()

Print "Se ejecuta el código del evento Arriba"

End

Public Sub Zona_DblClick()

Print "dobleclic"
Print Mouse.y

If Mouse.y < (Me.Height / 2) Then
Print "arriba ejecutado"
Raise Arriba
Else
Print "abajo ejecutado"
Raise Abajo
Endif

End


Y el del formulario:

Public mizona As Clic4

Public Sub Form_Open()

mizona = New Clic4(Me)


End


No me he preocupado de centrar el Drawingarea o dimensiones.

Te adjunto el código.


prueba2.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba2.tar.gz
Tamaño: 18.59 KB
Descargado: 64 veces
prueba2.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba2.tar.gz
Tamaño: 18.59 KB
Descargado: 64 veces
prueba2.tar.gz
Descripción:  
Descargar
Nombre del archivo: prueba2.tar.gz
Tamaño: 18.59 KB
Descargado: 64 veces

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Shell
Me gusta tu ejemplo, lo añadiré al curso de gambas, ( con tu permiso claro=.


Yo tengo este ejemplo hecho:
http://cursogambas.blogspot.com.es/...do-eventos.html

pero el tuyo es mucho más simple y mejor para explicar la relación entre observador y evento.

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
estemmm.... bueno el permiso tendrías que pedírmelo a mi que fui el de la idea.

solo que no estaba correcto el código

pero si me haces la mención correspondiente en tu blog te doy el permiso

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Pues claro, es para vosotros y para todos los que lo necesiten.
Bueno, cada uno ha puesto su granito de arena.

Podíamos decir:

"Si no hay evento, no hay método".

Julio:

Si, recuerdo el ejemplo del pelotón. Tengo que repasarlo mejor. ¿ Crees que se puede mejorar ?.
Recuerdo que comentabas que tenías algún tipo de problema cuando lo hiciste. Creo que querías
crear mas de un observador o evento a la vez y solo te respondía uno.

A mí me gusta tu ejemplo del pelotón.

v3ctor:

Ya nos contaras como lo aplicaras en algún ejemplo.

¿ Habías usado alguna vez el UserControl ?.

Ahora podíamos probar a hacer lo mismo, pero sin herencia. A ver que sale.

Saludos

última edición por Shell el Lunes, 04 Enero 2016, 10:07; editado 1 vez
Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Shell:
Citar:

Ahora podíamos probar a hacer lo mismo, pero sin herencia. A ver que sale.

No!!!!, al usar la herencia le da mucha potencia a la nueva clase Clic4, y a las sucesivas que hereden de ella.

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
He ampliado un poco más el ejemplo, para que se vea "toda la potencia" de lo eventos, os dejo el código fuente.


EjemploObservadorEvento-0.0.1.tar.gz
Descripción: Ejemplo de uso de eventos y observadores 
Descargar
Nombre del archivo: EjemploObservadorEvento-0.0.1.tar.gz
Tamaño: 11.27 KB
Descargado: 69 veces
EjemploObservadorEvento-0.0.1.tar.gz
Descripción: Ejemplo de uso de eventos y observadores 
Descargar
Nombre del archivo: EjemploObservadorEvento-0.0.1.tar.gz
Tamaño: 11.27 KB
Descargado: 69 veces
EjemploObservadorEvento-0.0.1.tar.gz
Descripción: Ejemplo de uso de eventos y observadores 
Descargar
Nombre del archivo: EjemploObservadorEvento-0.0.1.tar.gz
Tamaño: 11.27 KB
Descargado: 69 veces

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
excelente julio, gracias

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Julio:

Muy bien.

Si que se puede complicar con el segundo observador, hay que estar muy atento.
Puede no captarse a la primera. Que _Arriba y _Abajo tambien se pueda usar luego
en el formulario.

Se que el código es pequeño en los dos evento observador con el manejador "vigilo".
De esta forma es aun mas pequeño.

Public Sub vigilo_Arriba()

MostrarDirFlecha("arriba")

End

Public Sub vigilo_Abajo()

MostrarDirFlecha("abajo")

End


Public Sub MostrarDirFlecha(pos As String)

Dim frase As String

frase = Subst("Se ejecuta el código del evento &1, en el formulario ", pos)
Print frase
PictureBoxFlecha.Stretch = True ' para que se adapte el dibujo a las dimensiones del picturebox
PictureBoxFlecha.Picture = IIf(pos = "arriba", Picture["fechaArriba.png"], Picture["fechaAbajo.png"])

End


Estoy con otro ejemplo, pero es tan simple, que no sé si es adecuado añadir un evento o tan solo un método.

Saludos

Objetivo: Re: Como Generar Un Evento Creado Por Ti?
Shell:

Lo bueno que tiene usar eventos, es que por lo siguiente:

Imagina que mañana añado otro formulario que haga algo cuando se produzca el evento _Arriba o _Abajo, ¡¡ no tengo que modificar nada de los anteriores clases ni formulario !!!, sino que solo con añadir un observador al nuevo formulario, me "entero" que pasa en el drawingarea.


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.1523s (PHP: -21% SQL: 121%)
Consultas SQL: 26 - Debug off - GZIP Activado