lunes, 28 de marzo de 2016

Application.Busy



Nuestros programas muchas veces hacen tareas, en donde el usuario debe esperar, es el momento para encontrar formas visuales de avisarle al usuario de que el programa esta haciendo algo y el usuario debe esperar hasta que el programa termine; una forma de hacerlo gráficamente es usando Application.Busy. (el aviso consistiría en avisarle que el programa esta haciendo algo y que es lo que esta haciendo.)

Tiene dos estados: 0 que equivale a desocupado y 1 que equivale a ocupado
dejando el icono de nuestra aplicación por medio de la propiedad mouse=wait en wait.
También podemos hacerlo visible de otra manera según la imaginación de cada uno.
A modo de ejemplo yo use texto con el clásico movimiento de 3 puntos.


' gambas class file

' by postapase

Public mensaje As String = "Estoy haciendo algo espere..."

Public Sub Button1_Click()

Application.Busy = 1  'otra forma de hacerlo es Inc Application.Busy
LabInfo.Text = mensaje
Timer1.Start

End

Public Sub Button2_Click()

Timer1.Stop
Application.Busy = 0
'otra forma de hacerlo es Dec Application.Busy
LabInfo.Text = "He terminado la tarea asignada"

End

Public Sub Timer1_Timer()

Select Case mensaje
Case "Estoy haciendo algo espere..."
mensaje = "Estoy haciendo algo espere"
Case "Estoy haciendo algo espere"
mensaje = "Estoy haciendo algo espere."
Case "Estoy haciendo algo espere."
mensaje = "Estoy haciendo algo espere.."
Case "Estoy haciendo algo espere.."
mensaje = "Estoy haciendo algo espere..."
End Select

LabInfo.Text = ""
LabInfo.Text = mensaje

End

Public Sub Form_Open()
Me.Title = "Application.Busy"
End



Código fuente

Otras propiedades de Application


Application.Version

Nos da un string con la versión de nuestra aplicación.

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)

lunes, 14 de marzo de 2016

Ejemplo de clase Observer


Los Observadores son objetos que le permiten interceptar eventos lanzados por otros objetos, es decir que los "observan".
Puede interceptar eventos justo antes o después de que sean lanzados.
Por cada evento interceptado el observador lanzará un evento con el mismo nombre y los mismos argumentos.
Puede cancelar el evento original al usar STOP EVENT dentro del manejador de evento del observador.


' gambas class file

'by postapase

Private $hObserver As Observer

Public Sub Form_Open()

$hObserver = New Observer(Button1) As "Observador"

End

Public Sub Observador_Click()

If CheckBox1.Value Then
Debug "Se hizo clic en el botón. ¡Cancelo el evento!" & "(Observador Activado)"
Stop Event
Else
Debug "(El observador esta desactivado!)"
Endif

End

Public Sub Button1_Click()
Print "Me ves porque el Observador esta desactivado"
End


Código fuente en la Granja de Gambas.