Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Pasar Un Control De Un Formulario A Otro Formulario
Buenas!.
Quiero pasar un control completo a otro formulario.
En este caso se trata de un Picturebox. Sé que el otro formulario se va a mostrar solamente una imagen.
Se podría haber hecho de otra forma si solo es pasar una imagen.
Ambos formularios están vacíos, los controles se crean en tiempo de ejecución.
El primer problema que me encontré fue instanciar el control en el formulario destino.
Ese control que se le pasa con una propiedad, ya tiene valores. No es nuevo.
Imaginar que no tiene por que ser un PictureBox, lo que queréis pasarle, conociendo los tipos de controle que quieres pasar.
Se instanciaría un tipo determinado.
Me gustaría saber si creéis que el código del formulario destino se puede mejorar.
Formulario origen:
Formulario Destino:
Aquí tenéis el ejemplo.
Saludos
Descripción: |
Pasar un control de un formulario a otro formulario |
Descargar |
Nombre del archivo: |
PasarUnObjeto.tar.gz |
Tamaño: |
42.08 KB |
Descargado: |
27 veces |
Descripción: |
Pasar un control de un formulario a otro formulario |
Descargar |
Nombre del archivo: |
PasarUnObjeto.tar.gz |
Tamaño: |
42.08 KB |
Descargado: |
27 veces |
Descripción: |
Pasar un control de un formulario a otro formulario |
Descargar |
Nombre del archivo: |
PasarUnObjeto.tar.gz |
Tamaño: |
42.08 KB |
Descargado: |
27 veces |
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#1 Jueves, 02 Febrero 2017, 21:19 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Sin olvidar las posibilidades del procedimiento de instaciación _new del form2
en el form1:
dim f as form2
f=new form2(f, mipicturebox) 'le paso f (él mismo) porque gambas exige aquí el nombre del contenedor
En el form2
=================== No podemos regresar
última edición por shordi el Viernes, 03 Febrero 2017, 10:18; editado 2 veces
|
#2 Viernes, 03 Febrero 2017, 10:17 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
No termino de entender que aplicaciones tiene el pasar un control de un formulario a otro formulario.??
Saludos.
|
#3 Viernes, 03 Febrero 2017, 11:45 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Tincho:
Citar:
No termino de entender que aplicaciones tiene el pasar un control de un formulario a otro formulario.??
Hace poco Julio estuvo creando un ejemplo en el que desde un formulario podía controlar las propiedades
de los controles que estaban en otro formulario. Su ancho, alto, color (por decir algo).
Al pasar controles a otros formularios, estas construyendo en parte un formulario en tiempo real.
Cuando tienes un lienzo vacío, dibujas y coloreas. ¿ Estaba creado o lo hiciste en tiempo real ?.
Shordi:
Aplicaré lo que has mostrado y si hay algún problema te cuento como va.
En realidad esto es un pequeño ejemplo, de otra cosa que estaba haciendo. Solo que necesitaba
poder hacer esto para entenderlo mejor y continuar con el trabajo anterior.
Gracias.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Viernes, 03 Febrero 2017, 12:54 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Shordi:
Vale, he eliminado la propiedad objeto del Formulario Destino y usado el constructor new, donde
le paso a la variable privada el parámetro del argumento del constructor.
Entiendo la forma. De esa manera puedo pasar el control completo.
Pero no lograba mostrar el picturebox en el formulario destino.
Formulario Destino, antes:
Despues:
Pregunta: ¿ Cual es la razón por la que directamente no puedo mostrar pbox en el formulario destino ?.
Me he tenido que valer de otro objeto del mismo tipo que he instanciado en el formulario destino, asignándole las propiedades de pbox.
Espero que se me entienda. Creo que no es difícil de captar la idea. El resultado final es dos formularios visualmente iguales.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#5 Viernes, 03 Febrero 2017, 13:53 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Citar: ¿ Cual es la razón por la que directamente no puedo mostrar pbox en el formulario destino ?.
Cuando pasas un objeto lo que estás pasando es una referncia en memoria a dicho objeto. No una copia del mismo. Con ello consigues acceso total al control pasado pero no dos objetos distintos en dos formularios. Si lo que quieres es mostrarlo en el segundo formulario imagino (nunca lo he hecho) que símplemente con un objeto.reparent(me) y objeto.show() sería suficiente...
Saludos.
=================== No podemos regresar
|
#6 Viernes, 03 Febrero 2017, 19:06 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Shordi:
Si, es un referencia lo que se le pasa.
Citar:
Si lo que quieres es mostrarlo en el segundo formulario imagino (nunca lo he hecho) que símplemente con un objeto.reparent(me) y objeto.show() sería suficiente...
Al usar reparent(me) y luego show ha hecho un efecto de lo más raro.Ha desaparecido el picturebox del formulario origen y
ha aparecido solo en formulario destino. Se ha teletransportado.
Habría que pasarle mejor una copia del objeto.
Acabas de dejar a un padre sin su hijo!!!.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Viernes, 03 Febrero 2017, 21:26; editado 1 vez
|
#7 Viernes, 03 Febrero 2017, 21:24 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Citar: Al usar reparent(me) y luego show ha hecho un efecto de lo más raro.Ha desaparecido el picturebox del formulario origen y
ha aparecido solo en formulario destino. Se ha teletransportado.
¿Raro? ¿qué esperabas? es un único objeto que está aquí o está allí. Si quieres tener dos, necesitas dos, para lo cual o los creas en tiempo de diseño iguales y luego pasas sólo la propiedad picture o creas el segundo en tiempo de ejecución y copias una a una todas las propiedades del primer objeto.
No existe, aunque creo que se podría crear fácilmente, un procedimiento genérico para duplicar objetos.
Saludos.
=================== No podemos regresar
|
#8 Sabado, 04 Febrero 2017, 12:09 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pasar Un Control De Un Formulario A Otro Formulario
Citar:
... o creas el segundo en tiempo de ejecución y copias una a una todas las propiedades del primer objeto.
Esto fue lo que hice desde el primer momento. Creía que había otras formas.
O que no lo estaba haciendo correctamente.
Podemos pasar la copia de un array, pero no la copia de un objeto, siendo un array un objeto.
Bueno, todo en el fondo es un objeto.
Citar:
No existe, aunque creo que se podría crear fácilmente, un procedimiento genérico para duplicar objetos.
Aunque estuvimos hablando ya hace un tiempo. En el blog de Julio encontré esto:
POO. Copiar objetos
No he podido verlo con algo más de tiempo.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#9 Sabado, 04 Febrero 2017, 19:13 |
|
|
|