domingo, 20 de marzo de 2016

Ejemplo 2 - Clase Observer


Este ejemplo surgió a partir de este hilo del foro gambas:
http://www.gambas-es.org/viewtopic.php?f=1&t=5072

en el cual yo estaba buscando e investigando la forma de programar mis propios eventos. Después shell hizo su aporte y Julio lo remato con algunos arreglos mas, resultando en el ejemplo siguiente.


Clase personalizada llamada: DrawingZona


' gambas class file

'***********************************************************************
'Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=5072
'Victor (http://postapase.blogspot.com/), Shell, y Jsbsan
'copyright 2016
'***********************************************************************
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 = 200
End With

End

Public Sub Zona_Abajo()

Print "Se ejecuta el código del evento Abajo, dentro de la clase drawingzona"

End

Public Sub Zona_Arriba()

Print "Se ejecuta el código del evento Arriba, dentro de la clase drawingzona "

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



Formulario 

' gambas class file

'***********************************************************************
'Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=5072
'Victor (http://postapase.blogspot.com/), Shell, y Jsbsan
'copyright 2016
'***********************************************************************
Public mizona As DrawingZona

Public obs As Observer

Public Sub Form_Open()

mizona = New DrawingZona(Me)
'vigilo el objeto "mizona", para si se produce un evento Arriba o Abajo, hago algo en el formulario principal

obs = New Observer(mizona) As "vigilo" 'este observador observará lo que ocurre en el objeto "mizona"

End

Public Sub vigilo_Arriba()

Print "Se ejecuta el código del evento Arriba, en el formulario "
PictureBoxFlecha.Stretch = True ' para que se adapte el dibujo a las dimensiones del picturebox
PictureBoxFlecha.Picture = Picture["fechaArriba.png"]

End

Public Sub vigilo_Abajo()

Print "Se ejecuta el código del evento Abajo, en el formulario "
PictureBoxFlecha.Stretch = True ' para que se adapte el dibujo a las dimensiones del picturebox
PictureBoxFlecha.Picture = Picture["fechaAbajo.png"]

End

Descargar ejemplo
(necesario estar registrado en el foro)

No hay comentarios.:

Publicar un comentario