|
Página 1 de 3
|
Copiar Variables De Un Form A Otro
Autor |
Mensaje |
Cubel
Técnico Programador
Registrado: Enero 2010
Mensajes: 182
Edad: 35 Ubicación: Valencia - España
|
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!
|
#1 Jueves, 14 Enero 2010, 22:15 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
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
|
#2 Jueves, 14 Enero 2010, 22:29 |
|
|
Cubel
Técnico Programador
Registrado: Enero 2010
Mensajes: 182
Edad: 35 Ubicación: Valencia - España
|
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!
|
#3 Jueves, 14 Enero 2010, 22:33 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
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
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.
|
#4 Jueves, 14 Enero 2010, 22:47 |
|
|
nrcefe
Aprendiz
Registrado: Septiembre 2009
Mensajes: 88
Ubicación: Entre Rios, Argentina
|
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
|
#5 Jueves, 14 Enero 2010, 22:54 |
|
|
Cubel
Técnico Programador
Registrado: Enero 2010
Mensajes: 182
Edad: 35 Ubicación: Valencia - España
|
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!
|
#6 Jueves, 14 Enero 2010, 22:58 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
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
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.
|
#7 Jueves, 14 Enero 2010, 23:32 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Copiar Varibales De Un Form A Otro
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"
|
#8 Jueves, 14 Enero 2010, 23:59 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Copiar Varibales De Un Form A Otro
No, no es una instancia
Si tu haces
No estás enviando una instancia de ME. Estas enviando a ME
Y luego lo que recibes en el hijo
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.
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
|
#9 Viernes, 15 Enero 2010, 00:45 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#10 Viernes, 15 Enero 2010, 15:02 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 3
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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 Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|