https://foro.gambas-es.org/viewtopic.php?f=1&t=352&p=1926#p1926
-----------------------------------
soplo
Jueves, 14 Enero 2010, 22:47

Re: Copiar Varibales De Un Form A Otro
-----------------------------------
Te pongo un ejemplo de una conexión que abres en un form principal por ejemplo y lo pasas a un formulario para que en ese formulario no tengas que abrir de nuevo la conexión sino que utilices ya una abierta.

En un módulo al que llamo BD tengo una función como esta que sirve para conectar a base de datos y devolver la conexión
[code linenumbers=false syntax=gambas]public function Conectar() as connection 
Dim Cn as new connection
Cn.login="..."
cn.password="..."
cn.type="..."
cn.host="..."
cn.port="..."
cn.name="..."
try cn.open
if error then 'si se produjo un error
   message.Error("No se ha podido conectar a base de datos. (" & error.code & ") " & error.text )
endif
return cn[/code]

Ahora que tengo eso desde mi formulario principal quiero abrir la base de datos y hago
[code linenumbers=false syntax=gambas]Dim Cn as new connection
Cn=BD.conectar() 'me conecto a base de datos
if cn.opened then 'si la conexión está abierta then
   ... 'aquí hago lo que quiera en mi formulario principal con esa conexión.
endif[/code]

Y llega un momento en que el usuario elige una opción de un menú o pincha un botón de una barra de herramientas o algo y yo quiero enviarle una variable X de tipo integer y la conexión ya abierta.
[code linenumbers=false syntax=gambas]private sub OpcionMenu_click()
   Dim FC as FormularioConsulta 'Aquí declaro el nuevo formulario
   X=ObtenerValorDeX() 'aquí obtengo el valor de X que necesito
   FC=new FormularioConsulta(Cn,X) 'Aquí creo el nuevo formularioConsulta y le paso esos dos parámetros
End Sub[/code]

En el formulario Consulta para que reciba todos los parámetros que necesito lo único que tengo que hacer es programar el constructor para que acepte esos objetos y variables que le envían. Esto se hace con el método especial _new
[code linenumbers=false syntax=gambas]private Cn as connection, Var as integer 'declaro una variable y una conexión  privadas que serán visibles en todo el formulario

Public sub _new(CnEntrante as connection, VarEntrante as Integer)
   Cn=CnEntrante 'aquí asigno la conexión que entra a mi conexión definida en todo el formulario
   Var=VarEntrante 'aquí asigno la variable que entra en la variable definida en todo el formulario
End Sub[/code]

A partir de ahí dispones de la conexión que abriste en el formulario principal en tu formulario consulta y también de una variable que calculaste en el formulario principal y que quieres tener aquí

Es un ejemplo un poco extenso pero así te quedará claro. También puedes crear objetos y añadirles tus propias propiedades, pero eso otro día.

Como ves no solo puedes pasar variables, también puedes pasar objetos (incluso formularios enteros), variables, clases, ..., etc Lo que quieras.


