Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



miércoles, 23 de mayo de 2012

Gambas y OOP: Recibir información de Formularios

Es habitual que cuando llamemos a un formulario que necesitemos la información que haya introducido el usuaria para usarla en el programa principal.

Os voy a explicar un método para hacer esto usando el paradigma de programación orientada a objetos (POO). (ver nota 1)

Bien, imaginaos que tengamos dos formularios:
a) El formulario  Fmain, donde esta el programa principal
b) El formulario  FormIntroduceDatos, que es el encargado de pedirle al usuario que introduzca sus datos, por ejemplo nombre de usuario y clave.

El programa principal necesita en algún momento de su ejecución que el usuario introduzca su nombre y clave, y que según esos datos le permita continuar o no en el programa. Por lo tanto necesitamos que nos devuelva información el formulario FormIntroduceDatos al programa principal para operar con ella.

¿como lo hacemos?
El formulario FormIntroduceDatos, necesita tener una referencia del programa principal (formulario Fmain), para informale de los datos recibidos. Para ello le vamos a crear una propiedad que sea una referencia al objeto que le ha llamado.


Vamos a ver como sería el código del FormIntroduceDatos:



' Gambas class file

Property ref As Object 'creamos una propiedad ref, que va a contener la referencia del objeto  que le llama
Private href As Object ' href, es la forma de trabajar con ref, de forma privada dentro de la clase


Public Sub Form_Open()


End

Private Function ref_Read() As Object

Return href 'retornamos ref

End

Private Sub ref_Write(Value As Object)

href = value 'asignamos a ref

End

Public Sub ToolButtonCancelar_Click()

Me.close 'cerramos el formulario

End

Public Sub ToolButtonAceptar_Click()

'Hemos pulsado Aceptar, los datos introducidos los vamos a asignar al objeto de referencia

href.nombre = TextBoxNombre.Text
href.password = TextBoxPassword.text
'ya hemos pasados los datos al programa principal....
'De esta forma hemos conseguido "recuperar", la información del formulario antes de cerrarlo

'cerramos el formulario
Me.close
End

Ahora vamos a ver como llamamos al formulario FormIntroduceDatos, en el programa principal:



Property nombre As String 'propiedad que contiene el nombre de usuario
Private hnombre As String

Property password As String 'propiedad que contiene la contraseña
Private hpassword As String

Private Function nombre_Read() As String

Return hnombre

End

Private Sub nombre_Write(Value As String)

hnombre = Value

End

Private Function password_Read() As String

Return hpassword

End

Private Sub password_Write(Value As String)

hpassword = value

End

'aqui empieza lo interesante....


Public Sub ToolButtonIntroduce_Click()

Dim f As New FormIntroduceDatos 'creamos una instancia del FormIntroduceDAtos
f.ref = Me 'a la propiedad que tiene nuestra instancia (.ref) le vamos a asignar la referencia del objeto actual (osea el programa principal, formulario Fmain)
f.ShowDialog 'mostramos el formulario y esperamos a que se cierre

'aqui vamos a ver los datos que se han actualizado de nuestras variable privadas hnombre y hpassword
TextLabelDatos.text = "El nombre de usurio es <u>" &
hnombre & " </u><br> y su contrasena es <u>" & hpassword & " </u>"
End


Si quereis descargar el codigo completo: Enlace Version Gambas 3.1.1





Fuente:
http://www.gambas-es.org/viewtopic.php?f=1&t=491&highlight=valores+formulario
Referencias:
http://gambasdoc.org/help/lang/me?es&v3

Nota 1:
Podríamos usar variables globales (definir en un módulo una variable publica, y usarla donde queramos). A la larga este método nos traerá problemas al querer reutilizar el código, ampliar el programa, etc...