![]() |
problema traspaso de datos entre formularios hijos
Hola, ¿que tal el día? espero se os esté dando mejor que a mi.
Vereis, estoy realizando una práctica sobre la gestión de un hotel, de momento la gestión de clientes, para lo cual utilizo una aplicación MDI. Tengo 3 formularios: 1 Formulario principal (Form1), 1 formulario hijo (Form2) y otro formulario dependiente del anterior, es decir, dependiente del hijo, este último llamado( Form2_1). En el formulario 2 creo el formulario 2_1 en un boton, de la siguiente form: y en el uses del form2_1 tengo puesto la Unit2 tal y como he leido en el foro. El Form2_1 tiene un DBGrid que cuando ejecuto el evento OnClick su misión es transpasar los datos del Grid a los edit del Form2. He estado investigando en el foro y en el histórico, pero la verdad no lo tengo nada claro. Segui los pasos de un amigo forero que decía en uno de los hilos q leí,que pasase los datos a variables globales en el form2_1 y que accediese a ellas en el form2 y me paso algo raro, puse los datos en las variables globales, pero se me olvido acceder a ellas en el form2 y funcionó, me pasó los datos. Lo cual no entiendo. Bueno despues de este parrafo y de la chapa que os he metido, voy al grano. -¿Si alguien me puede explicar de forma clara como hacerlo?¿Y que pasaría si el formulario que tiene que recibir los datos está cerrado? -Otra cosina más, ¿dónde puedo encontrar un manual ó imformación extensa sobre los MDI en Delphi. Yo he estudiado los MDI en Visual Basic 6, y la verdad me parecieron algo más sencillos, pero he elegido Delphi para hacer mis practicas. Bueno ya me despido, siento haberme alargado tanto, igual he preguntado demasiado, pero es que me interesa profundizar en este tema |
Cita:
Cita:
Simplemente cuando creas y modificas un formulario visualmente, lo que estas haciendo es "moldeando" una clase. Los formularios son clases y son tratados como cualquier clase, necesitan crearse para ser usados, tienen propiedades, métodos y eventos, y pueden ser heredados. Si tu quieres que un formulario acepte algun tipo de datos, simplemente puedes crear una propiedad en este, o definir métodos para asignar propiedades, o variables públicas, o bien puedes acceder a los objetos que has pegado visualmente sobre este. Lo que es importante es poder acceder al formulario, si este lo asignas a una variable global, tienes que tener en cuenta que no puedes tener mas de una instancia de una clase asignada a una única variable. ¿Qué es lo que necesitas comunicar a tu formulario? Cita:
Saludos! |
Saludos,
Chequeate este hilo: http://www.clubdelphi.com/foros/show...8484#post78484 Creo que te pueden ayudar. Esta de dos formas, con Form normales y tambien MDIChild. Hasta luego y suerte. |
codigo de transferencia
Os paso el codigo que me pediste delphi.com.ar, sobre la pregunta que he hecho de declarar las variables globales y pulsar en el grid y que me pase los datos al formulario que le llama.
Os explico más detalladamente lo que pretendo conseguir, el Form2 es un formulario de gestión de clientes, uno de los botones es el de busqueda, que es el que yo pulso y en el creao el Form2_1 de la siguiente forma: //En el Form2 botón de busqueda
En el Form2_1 tengo una DBGrid que contiene los datos del todos los clientes dados de alta hasta el momento, cuando pincho en el grid sobre uno de ellos sus datos expuestos en el grid deben pasar a los TDBEdit del Form2 y así se realiza la busqueda de un cliente para observar sus datos. Para ello utilizo el siguiente codigo: //Declaro las variable globales en el public del Form2_1
//En el evento OnClik del DBGrid hago lo siguiente:
yo pienso que lo normal sería que ahora despues de cerrar el Form2_1, en el Form2 igualasemos los TDBEdit al valor de las variables globales, pero sín hacer esto último sale y no se porque? Y esa es la razón por la que quiero pasar los datos del DBGrid a los TDBEdit del Form2. Gracias a ambos, probaré también tu forma vtdeleon. |
"Si ya sale, sin igualar los datos", significa que el DBGrid de búsqueda está enlazado al mismo dataset (tabla o consulta) que el form donde quieres poner los datos, así, al hacer un clic en el Grid de búsqueda, el apuntador de la tabla Clientes se mueve al que has hecho clic, y por tanto, el Form que tienes los DBedits (que tambien está apuntando a la tabla Clientes), se actualiza y te muestra el cliente.
Solución: No necesitas variables globales. Lo único que necesitas es que el usuario haga clic en la ventana de búsqueda. Un saludo |
Jo!!!, mil gracias.
No puedo ser tan tonta, de no darme cuenta de esto. Mil gracias. |
A todos nos pasa.... El bosque no te deja ver el arbol ;)
Un saludo |
La franja horaria es GMT +2. Ahora son las 09:32:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi