PDA

Ver la Versión Completa : Como intercambio información entre formularios


pyanqn
02-11-2005, 16:37:57
hola, les comento que estoy aprendiendo delphi, y tengo un problemita, tengo dos formularios, uno llama al otro, pero quiero que el segundo retorne los datos que son cargados alli, al primero y este pueda procesarlos, hasta el momento no encontre la forma de hacerlo...

Gracias.

epuigdef
02-11-2005, 16:51:06
cómo llamas al segundo formulario desde el primero?


Lo más fácil sería poner variables en la sección PUBLIC del segundo, y entonces desde el primero las puedes acceder: Form2.variable.

Un ejemplo de código sería:



var form2 : TForm2;

form2 := TForm2.create(nil);

if (Form2.showmodal) then
begin
mivariable := Form2.variable;

end;



Edu

pyanqn
02-11-2005, 16:59:48
Lo que inteno es: Aprietas un boton y abre una ventana que muestra un DBGrid, cuando selecciones un fila, y aprietes el boton aceptar en esa ventana, se cierra, y en la ventana en la que llamó, quiero tener disponibles esos datos.

El codig que uso es:

Application.CreateForm(TFrmBuscar, FrmBuscar);
try
FrmBuscar.ShowModal;
//Aqui debo obtener los datos?, cómo?
finally
FrmBuscar.Free;
end;

Héctor Randolph
02-11-2005, 17:08:56
Si lo que tienes es un DBGrid, la información debes obtenerla directamente del DataSet.

Es decir recupera la información directamente de los campos.

Si la tabla está en el FrmBuscar entonces haz algo así


if FrmBuscar.ShowModal=mrOk then
begin
//Aqui debo obtener los datos?, cómo?
Var1:=FrmBuscar.Table1.FieldByName('NombreDeMiCampo').AsString;
// etc..
end;
end;

pyanqn
02-11-2005, 17:16:11
Si, claro que puedo obtenerla del dataset, pero, decime si estoy en lo cierto.
La DBGrid presenta varios registros, el usr selecciona uno, y pulsa un boton aceptar, ahora del otro lado, en el dataset quedo apuntando al registro que selecciono?

Héctor Randolph
02-11-2005, 17:24:22
Esa es la idea, cuando seleccionas algo en un DBGrid, el puntero de registros se desplaza hasta esa nueva posición y ahi se quedará mientras no hagas más cambios.

Un saludo.

Neftali [Germán.Estévez]
02-11-2005, 17:25:20
...y en la ventana en la que llamó, quiero tener disponibles esos datos.


Application.CreateForm(TFrmBuscar, FrmBuscar);
try
FrmBuscar.ShowModal;
//Aqui debo obtener los datos?, cómo?
finally
FrmBuscar.Free;
end;

Define una propiedad pública en el form FrmBuscar (por ejemplo ValorResult), antes de cerrarlo asignale el valor a la propiedad.
En el código que tienes arriba puedes consultar el valor de la propiedad antes de liberar el form:


Application.CreateForm(TFrmBuscar, FrmBuscar);
try
FrmBuscar.ShowModal;
Str := FrmBuscar.ValorResult;
finally
FrmBuscar.Free;
end;

pyanqn
03-11-2005, 16:14:55
Ok, gracias.
Pero ahora, disculpa que pregunte esto:
¿En que parte debería declara la variable que deseo que sea publica?

Unit tanto
Interface
Type //Aca se define el formulario
...
End;//Termina la definicion
Var
//Seria aqui?, porque si es así no puedo verla desde otro mudulo.
Implementation
...

__hector
03-11-2005, 17:04:13
Tienes que declararla dentro de la deficion de la clase. Tu archivo .pas debe tener algo como:

TFormulario = Type(class)
propiedades..
.....
procedimientos..
....
funciones ...
...
public
{declara las publicas aqui}
private
{declara las privadas aqui}
..