Delphi - Pasando y obteniendo datos de un Form

 
Vista:

Pasando y obteniendo datos de un Form

Publicado por Pedro Fdez (4 intervenciones) el 13/03/2005 01:16:42
A ver si algún alma caritativa quisiera explicarme como puedo pasarle a un formulario valores desde otro, y devolverle valores al primero. No sé si me he explicado. Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasando y obteniendo datos de un Form

Publicado por Kwerty (112 intervenciones) el 13/03/2005 07:57:14
Haz que los datos que quieras pasar sean variables Public (que pueden ser accedidas desde otros forms). Además, el form al que quieres acceder (leer sus variables public) debe aparecer en la clausula Uses (dandole a archivo, Use Unit si no recuerdo mal).
Si quieres información específica debes darnos más datos...
Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obteniendo datos de un Form

Publicado por Pedro Fdez (4 intervenciones) el 13/03/2005 13:07:16
Gracias por contestar. Lo de pasarle datos, lo hice ya como tu me dijiste. Con eso no hay problema. El tema es obtener datos de un formulario al que se llama desde otro. Esto es: tienes un formulario, y en un momento determinado de la aplicación, llamas a otro formulario. Lo que quiero es que al cerrar este segundo formulario, devuelva una información que quiero guardar en una variable en el primero. No se si me explico con claridad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obteniendo datos de un Form

Publicado por Kwerty (112 intervenciones) el 13/03/2005 15:27:21
Pues desde el mismo formulario que lo llama. Por ejemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
Texto: String;
begin
Form2:= TForm2.Create(Self); //Lo creamos
Form2.Edit1.Text:='Hola'; //Le pasamos el valor
Form2.ShowModal;
Texto:=Form2.Edit1.Text;
ShowMessage (Texto);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obteniendo datos de un Form

Publicado por Kwerty (112 intervenciones) el 13/03/2005 15:28:33
(No me dejaba ponerlo en el anterior) Igual que antes: Dos Forms
********Otro método:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
OtroTexto: String;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2:= TForm2.Create(Self); //Lo creamos
Form2.Edit1.Text:='Hola'; //Le pasamos el valor
Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage (OtroTexto);
end;

end.

end;

Y en el Form2, en el evento OnClose:

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.OtroTexto:=Edit1.Text;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obteniendo datos de un Form

Publicado por Pedro Fdez (4 intervenciones) el 13/03/2005 19:57:49
No puede ser así porque, en mi caso, lo que en tu ejemplo es Form2, es una rutina que sirvea varios módulos que no se saben a priori. Con lo que no puedo hacer aquello de poner el dato en la variable public de Form1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar variable por referencia a un Form

Publicado por Pedro Fdez (4 intervenciones) el 13/03/2005 20:03:32
Poseso, que si al crear un Formulario desde otro, puedo pasarle una variable (p.e. strCodigo: string), por referencia; que se manipule en este y se asigne un valor a la variable que al cerrarse el segundo formulario, en el primero estuviera la variable con el valor cambiado. Sería algo así como que al Crear el formulario segundo se pudiera hacer algo como ésto: frmBusqueda := TfrmBusqueda.Create(self, var strCodigo: string);
frmBusqueda.ShowModal; y cuando frmBusqueda.Close, nosotros hemos asignado en frmBusqueda un valor a strCodigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar variable por referencia a un Form

Publicado por Kwerty (112 intervenciones) el 13/03/2005 20:10:15
No veo por qué no puedes crearle una variable publica a frmBusqueda y al crearlo haces así:

frmBusqueda:=TFrmBusqueda.Create (Self);
frmBusqueda.NombreVariablePublica:='String';

Luego, los procedimientos dentro de ese form pueden manipular el valor de la variable. Al cerrar el form, independientemente de los procesos que hayan sido llevados a cabo (a nosotros nos da igual si lo hacemos así), en el OnClose le devolvemos la variable al form que lo creo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar