Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   pasar datos de un form a otro form (https://www.clubdelphi.com/foros/showthread.php?t=49095)

vroa74 12-10-2007 16:49:57

pasar datos de un form a otro form
 
Hola estoy usando BDS 2006.
he leido los hilos relacionados con este tema más no ha funcionado.

Quiere pasar un valor o arios valores de un form a otro form.

los forms esta ligados(esta declarados mutuamente para poder se utilizados)


en form1 tengo declarada variables las cuales son llamadas y modificadas en el form2

al regresar al form 1 las variables no fueron modificadas y el valor que me interesa consevar del form 2 se pierde.

que puedo hacer ????????
deseo conserver el valor.

asi abro el form2:
Código Delphi [-]
var f : tForm2;
begin
    f:= Tform2.Create(application);
    f.Image1.Picture.LoadFromFile(form1.logo);
 try
    f.ShowModal;
 finally
    f.Free;
    Label7.Caption :=IntToStr(id_dir); // asigno la variable que se cambio en el form2 a una etiqueta para saber si el valor se pierde.

eduarcol 12-10-2007 16:55:36

y donde tienes declarado la variable Id_Dir en form2 o form1??

vroa74 12-10-2007 17:01:47

La variable Id_Dir esta declarada en Form1
como publica para que sea accesible para form2.

eduarcol 12-10-2007 17:07:33

porq no muestras el codigo donde la asignas??

JoseAntonio 12-10-2007 17:10:38

La verdad no se entiende muy bien tu codigo, pero al parecer el f del tipo tform2 es una variable del tipo tform2 pero no es la misma Form2 de tu proyecto, quizas a eso se deba que tu codigo no funciona.

vroa74 12-10-2007 17:22:07

En el form1
Código Delphi [-]
  private
    { Private declarations }
  public
        id_tit : integer;
        id_dir : integer;
        id_com : integer;
        id_tra : integer;
    { Public declarations }
  end;

var
  Form1: TForm1;

Mando a llamar al form2

Código Delphi [-]
procedure TForm2.JvBitBtn4Click(Sender: TObject);
var f : tForm2;
begin
    f:= Tform2.Create(application);
    f.Image1.Picture.LoadFromFile(form1.logo);
 try
    f.ShowModal;
 finally
    f.Free;
    Label7.Caption :=IntToStr(id_dir);  // cuando regresa del form refreca el valor de la variable
 end;// fin del try
end;

Estabdo en el form2 esto es lo que sucede caundo oprimo el boton para asignarle el valor a la variable declarada en el form1.
Código Delphi [-]
procedure TForm2.JvBitBtn1Click(Sender: TObject);
begin
    form1.id_dir := strtoint(Edit1.Text);
end;

gluglu 12-10-2007 17:42:19

A mi me funciona perfectamente el ejemplo que has puesto en BDS2006.

Creo que deberías aclarar varios puntos.

Cita:

Mando a llamar al form2

Código Delphi [-]
procedure TForm2.JvBitBtn4Click(Sender: TObject);
var f : tForm2;
begin
    f:= Tform2.Create(application);
    f.Image1.Picture.LoadFromFile(form1.logo);
 try
    f.ShowModal;
 finally
    f.Free;
    Label7.Caption :=IntToStr(id_dir);  // cuando regresa del form refreca el valor de la variable
 end;// fin del try
end;

No sé si te has equivocado al copiar y pegar tu código aquí en este hilo. Entiendo que ese procedimiento debe encontrarse y estar declarado en el Form1.

Cita:

Código Delphi [-]
try
    f.ShowModal;
 finally
    f.Free;
    Label7.Caption :=IntToStr(id_dir);

Label7.Caption no se va a actualizar con el valor de Id_dir que has modificado en el Form2 HASTA que se cierre el Form2. Así lo has decidido en tu código.

Cuando se cierra Form2, el caption de Label7 cambia correctamente al valor dado a id_dir en el Form2.

Lo dicho, por lo demás, a mi me funciona perfectamente.

Dime si no es así, y si necesitas aclarar algun tema adicional. ;)

vroa74 12-10-2007 18:20:24

Lo que has descrito es justo lo que necesito
lamentablemente a mi no me funciona
aun desconosco porque

Caral 12-10-2007 18:21:44

Hola
Aqui tienes un ejemplo muy sencillo para pasar datos de un from a otro y viceversa.
Saludos

gluglu 12-10-2007 18:23:08

Revisa tu código.

Si lo deseas, pon aquí el código completo del Form1 y del Form2, si no es demasiado grande.

Te recomiendo por otro lado que intentes abrir un nuevo proyecto con las funciones básicas, y verás como debería funcionar. Algo debes de tener en tu código mal para que no te funcione tal y como explicas.

gluglu 12-10-2007 18:35:09

1 Archivos Adjunto(s)
Este es el ejemplo que tu mismo has puesto, simplificado al máximo.

Verás como funciona ....

Cuando cierras Form2, el Label1 en el Form1 cambia de valor, después de haber pulsa el Button1 en el Form2.

;)

vroa74 12-10-2007 18:36:01

mucha gracias por el ejemplo lo revise rapidamente
si pasa los valores mas sin embargo me di ceunta de un detalle
los valores que pasate solo son dato ente componentes.

El problema que tengo son en variables creadas por el usuario y al pasarlas de un form al otro las pierdo.

Quizas podria tener mas de un componente oculto dentro de mi form, mas eso no se me hace practico que cada vez que desee para un valor de una variable tenga que crear un componente no visible.

voy a hacer una ejemplo a ver si puede representar mi duda.

voy a editar este msg en 10 min.

gluglu 12-10-2007 18:45:48

Supongo que después de escribir tu último mensaje viste el código que adjunté justo antes, que corresponde a tu propio código. Ya me dirás ....

vroa74 12-10-2007 18:55:30

gracias a todos.
la resolucion del problema en mi caso muy en particular es :

form1 levanta variable id_dir
form2 lee form1.id_dir
regreso a form1 uso id_dir no tiene valor mas sin embargo si llama a form1.id_dir de devuelve el valor que conserva del form2.

otra forma en la cuel me funciono es igualar los valores.
cuando regreso al form1 hago
id_dir := form1.id_dir;
y de esta forma el valor se unifica.

pro que esta pasando. ????
no tengo la menor idea.

eduarcol 12-10-2007 19:08:06

no tendras declarada dos veces esa variable id_dir, es lo unicoque se me ocurre por lo que dices

vroa74 12-10-2007 19:11:52

He revisado el codigo 3 veces y sili usi id_dir en el form1 en todos los demas solo hago referencia de el invocandolo form1.id_dir. Por ese motivo declare la variable publica.


La franja horaria es GMT +2. Ahora son las 11:20:52.

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