Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   problema traspaso de datos entre formularios hijos (https://www.clubdelphi.com/foros/showthread.php?t=19858)

VRO 29-03-2005 18:52:47

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:
Código Delphi [-]
 form:=TForm.create(Application);
 form.show;
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

delphi.com.ar 29-03-2005 19:56:42

Cita:

Empezado por VRO
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.

Mmmmm... nos podrías mostrar el código fuente??

Cita:

Empezado por VRO
-¿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?

Olvídate de lo que has visto en VB, a mi parecer es orroroso el trato de los formularios en ese lenguaje, Delphi es algo mas prolijo para tratarlos.
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:

Empezado por VRO
-Otra cosina más, ¿dónde puedo encontrar un manual ó imformación extensa sobre los MDI en Delphi.

En la ayuda de Delphi, es mas que completa!


Saludos!

vtdeleon 29-03-2005 22:13:06

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.

VRO 30-03-2005 08:30:44

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
Código Delphi [-]

 procedure TForm2.buscarcliClick(Sender: TObject);
var
  cliente: TForm2_1;
begin

  cliente:=TFoorm2_1.Create(Application);
  cliente.Show;
end;

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
Código Delphi [-]

cod,tipo,nif,nom,dir,pobla,cp,pro,p,fn,tlf,movil,s:String;

//En el evento OnClik del DBGrid hago lo siguiente:
Código Delphi [-]

procedure TForm2_1.DBGridCellClick(Column: TColumn);
begin
cod:=cli.Fields[0].Text;
  tipo:=cli.Fields[1].Text;
  nif:=cli.Fields[2].Text;
  nom:=cli.Fields[3].text;
  dir:=cli.Fields[4].Text;
  pobla:=cli.Fields[5].Text;
  cp:=cli.Fields[6].Text;
  pro:=cli.Fields[7].Text;
  p:=cli.Fields[8].Text;
  fn:=cli.Fields[9].Text;
  s:=cli.Fields[10].Text;

  tlf:=cli.Fields[11].Text;
  movil:=cli.Fields[12].Text;

  //Salgo del Form2_1
  free;
end;

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.

Lepe 30-03-2005 11:09:55

"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

VRO 30-03-2005 11:22:33

Jo!!!, mil gracias.

No puedo ser tan tonta, de no darme cuenta de esto.

Mil gracias.

Lepe 30-03-2005 13:35:53

A todos nos pasa.... El bosque no te deja ver el arbol ;)

Un saludo


La franja horaria es GMT +2. Ahora son las 07:03:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi