Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Copiar Variables De Un Form A Otro
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Copiar Variables De Un Form A Otro 
 
Bueno, pues como dice el titulo, no se pasar variables de un form a otro.
La cuestión es que tengo el from principal, donde descargo unos datos de una base de datos, y si todo es correcto, debería cerrarse ese form y abrirse el form2 pero con los datos descargados de la base...

como puedo hacerlo?
 




===================
Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro.
Albert Einstein

En el SEXO querer es poder, si ELLA quiere, TU puedes.
Cubel!
 
Cubel - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
Lo ideal es que trabajaras con un modulo, en donde declares variables publicas para almacenar los datos que descargas con el formulario 1 y que luego deseas leer con el formulario2.
Ahora si quieres pasar datos desde un formulario a otro debes habilitar la opcion de que todos los formularios son publicos.
Hace clic en el menu Proyecto ->Propiedades->Opciones->Los controles de formulario son publicos, luego le colocas "Si".

Para probarlo, crea dos formularios,llamados Form1 y Form2. En el Form1 coloca un boton y en el Form2 un texbox.
Hace doble clic en el boton y escribe:

form2.textbox1.text="Hola Mundo"

Ejecuta y te deberia colocar el texto "Hola Mundo", en el cuadro de texto del Form2.

Espero te sirva.

Saludos
 



 
última edición por abarzuaf el Jueves, 14 Enero 2010, 22:31; editado 1 vez 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
Ok, ok, y puedes explicarme lo del principio? lo que es ideal trabajar con un modulo.

Lo digo porque ya que tengo que aprender algo, mas vale aprender una buena costumbre antes que aprender una mala y dentro de un tiempo tener que volver a aprender otra.
 




===================
Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro.
Albert Einstein

En el SEXO querer es poder, si ELLA quiere, TU puedes.
Cubel!
 
Cubel - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
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


Ahora que tengo eso desde mi formulario principal quiero abrir la base de datos y hago
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


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


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


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.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
Como ves no solo puedes pasar variables, también puedes pasar objetos (incluso formularios enteros), variables, clases, ..., etc Lo que quieras.


¿Eso quiere decir, que tambien puedes usar los controles de ese formulario que le estas pasando a la función?

saludos, y gracias
 



 
última edición por nrcefe el Jueves, 14 Enero 2010, 22:55; editado 1 vez 
nrcefe - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
  Gracias!! no me esperaba tanto... supongo que esto tardare un rato en poderte contestar ya que lo iré haciendo paso a paso y probando!

Muchas gracias. A simple vista parece todo bastante lógico y sin dificultades. Ya te digo algo, voy a intentarlo.
 




===================
Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro.
Albert Einstein

En el SEXO querer es poder, si ELLA quiere, TU puedes.
Cubel!
 
Cubel - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
Citar:
¿Eso quiere decir, que tambien puedes usar los controles de ese formulario que le estas pasando a la función?

Si claro.

Por ejemplo aquí pongo una nueva instancia que envía el formulario en que estoy y que es un formulario de clase FormularioPrincipal
Dim Fo as new FichaEmpleado(me)

Y en el formulario ese tu pones lo siguiente
Private F as FormularioPrincipal
public sub _new(FormEntrante as FormularioPrincipal)
F=FormEntrante
end


Ahora tu puedes en tu formulario hacer cosas en F, poner o cambiar valores, etc.Lo que cambies en F cuando estas en formulario FichaEmpleado lo estas cambiando en FormularioPrincipal porque es el mismo. Simplemente enviaste FormularioPrincipal como parámetro.

Lo que no debes hacer porque te puede dar problemas es cerrar el formulario padre cuando estas en el hijo. Desde un punto de vista teórico se puede pero te estás buscando problemas.

Otra cosa que no puedes hace es que acabes llamandote a tí mismo. No se puede hacer que un formulario acabe conteniéndose a sí mismo. Eso da error de referencia circular.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
soplo escribió: [Ver mensaje]


Ahora tu puedes en tu formulario hacer cosas en F, poner o cambiar valores, etc.Lo que cambies en F cuando estas en formulario FichaEmpleado lo estas cambiando en FormularioPrincipal porque es el mismo. Simplemente enviaste FormularioPrincipal como parámetro.


No estoy de acuerdo. F es una instancia de FormularioPrincipal , y los cambios se producen en la instancia F, no en el formulario original.

Por otra parte siempre es mejor declarar variables de ámbito global en un módulo aparte. Cuando digo ámbito global quiero subrayar que serán accesibles dentro de todo el proyecto, sólo hay que declararlas con PUBLIC y llamarlas de la forma

moduloglobal.mivariable

Por defecto los controles de los formularios no son públicos y bajo mi punto de vista así debería ser para evitar otros males. Se pueden hacer públicos con la opción que hay en las propiedades del proyecto, pero no lo recomiendo. En su lugar, yo utilizo funciones públicas que devuelven los valores que necesitemos desde cualquier otro formulario. Pero eso va en los gustos de cada uno.

Recordar que si tenemos una variable pública en un formulario y éste lo cerramos (destruimos), todas sus variables desaparecerán en ese preciso instante, no siendo accesibles nunca más y produciendo errores, por eso lo de utilizar módulos para almacenar variables.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
No, no es una instancia

Si tu haces
Dim Fo as new FichaEmpleado(me)

No estás enviando una instancia de ME. Estas enviando a ME

Y luego lo que recibes en el hijo
Private F as FormularioPrincipal
public sub _new(FormEntrante as FormularioPrincipal)
F=FormEntrante
end

Lo que queda en F no es una instancia de FormularioPrincipal. Es formularioPrincipal

Otra cosa sería si hacemos esto. Entonces si sería una instancia y no el formulario que queremos.
Private F as NEW FormularioPrincipal
public sub _new(FormEntrante as FormularioPrincipal)
F=FormEntrante
end


Los controles de formulario deberían ser públicos para poder acceder desde fuera a ellos.

 
 



 
última edición por soplo el Viernes, 15 Enero 2010, 01:01; editado 2 veces 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Copiar Varibales De Un Form A Otro 
 
Llevas razón. No sé dónde había visto el New. En ese caso tu planteamiento es correcto. "Me" en este caso es el padre de FichaEmpleado, pero "Fo" sí es una instancia de FichaEmpleado.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿Como Usar Variables De Un Form Desde Otro? ariel Controles/Librerías/Componentes 9 Lunes, 08 Noviembre 2010, 20:04 Ver último mensaje
jsbsan
No hay nuevos mensajes Se Puede Llamar Desde Un Form A Un Menupop... v3ctor General 6 Martes, 03 Diciembre 2013, 09:06 Ver último mensaje
jsbsan
No hay nuevos mensajes Copiar Formulario De Un Proyecto A Otro. frajanic General 3 Miercoles, 13 May 2015, 21:16 Ver último mensaje
frajanic
No hay nuevos mensajes Copiar Desde El Bash Una Archivo A Otro Or... jsbsan Shell Scripting 3 Domingo, 22 Agosto 2010, 12:59 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario