PDA

Ver la Versión Completa : Llamada a Form de Consulta y retorno de informacion


cervexa
08-07-2003, 11:17:52
Si hago:
Consulta:=TConsulta.Create(Self);
Consulta.Show;
Como recupero el codigo que he seleccionado en el form de consulta para el form principal?

cervexa
08-07-2003, 11:21:11
He probado a poner en el form principal:
codigo:=Consulta.QueryCon.fieldbyName('CODIGO').asinteger;
Pero no parece funcionar...

__cadetill
08-07-2003, 12:32:25
si tienes que hacerlo con un Show (en lugar de ShowModal que te facilitaria en trabajo :p) lo unico que tienes que hacer el crearte una variable publica en el form llamador y, en el OnClose del form llamado actualizar dicha variable

Otra solucion es crearte un objeto que contenga dicha variable en el form llamador y pasarle como parametro este objeto al form llamado

guillotmarc
08-07-2003, 12:52:28
Hola.

No puedes declarar un constructor, que devuelva valores. Para solventarlo yo suelo declarar funciones de clase.


class function Seleccionar: Integer;

...

implementation

class function TConsulta.Seleccionar: integer;
begin
with TConsulta.Create(Application) do begin
// Abrir DataSets, inicializar controles, ...
ShowModal;
if ModalResult = mrOk then begin
Result := DataSet.FieldByName('Codigo').AsInteger;
end
else begin
Result := -1;
end;
Release;
end;
end;



Para usarlo solo debes añadir el formulario en el Uses del nuevo formulario y acceder mediante algo como :


Codigo := TConsulta.Seleccionar;
if Codigo <> -1 then begin
...
end;

Contreras
08-07-2003, 14:42:41
Soy estudiante de Informatica, y necesito aprender a programar en delphi.

Puede uno de ustedes enviarme un manual, en el cual yo pueda aprender. Tengo una ventaja y es que se programar en pascal. la cual es la plataforma de delphi.

Espero que me ayuden!!!

aneudicontreras@hotmail.com

cervexa
08-07-2003, 14:58:06
class function Seleccionar: Integer;
...
implementation
class function TConsulta.Seleccionar: integer;
begin
with TConsulta.Create(Application) do begin
// Abrir DataSets, inicializar controles, ...
ShowModal;
if ModalResult = mrOk then begin
Result := DataSet.FieldByName('Codigo').AsInteger;
end
else begin
Result := -1;
end;
Release;
end;
end;

Codigo := TConsulta.Seleccionar;
if Codigo <> -1 then begin
...
end;


No entiendo como la funcion, que es donde se crea el formulario de consulta, la pones en el mismo formulario de consulta. ¿No debería ir en el formulario que hace la llamada a la consulta?
Otra cosa, al cambiar el formulario de MDIChild a FsNormal me da error al hacerle el showModal me da el siguiente erro:
cannot make a visible window modal
Un Saludo.

Para Contreras: Yo tambien estoy empezando y si miras en las secciones de ejemplos y manuales de este foro vas a encontrar todo lo que necesitas.
Gracias de antemano.

guillotmarc
08-07-2003, 15:11:19
Hola

En efecto, la pones en el mismo formulario de consulta. De esta forma te sirve para cualquier formulario que quiera realizar consultas.

Lo único que va en el formulario que hace la llamada a la consulta, es la referencia en el Uses, y el código de llamada (se trata de encapsular el código, cuanto más sencilla se la utilización del modulo desde uno externo, mejor) :


Codigo := TConsulta.Seleccionar;
if Codigo <> -1 then begin
...
end;


Cuando pasas de fsMdiChil a sNormal, pón la propiedad Visible del Formulario a False. De esta forma no te saltará ese error.