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
|
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
|
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...