Ver Mensaje Individual
  #4  
Antiguo 20-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
En este caso, todo cambia radicalmente:

un form Mdichild no lo puedes poner modal, así que creamos un evento, y al cerrar la ventana de consulta, miramos si alguien está esperando por ese evento.

Código Delphi [-]
type
  // defino mi evento personalizado
   type  TinformarA: procedure (const codigoSeleccionado:integer) of object;

  TFormaConsultas = class(TForm)
  private
    FInforma:TinformarA;
    FCodigo: Integer;

  public
    property Codigo: Integer read FCodigo write FCodigo;
    property InformarA:TinformarA read Finforma, write Finforma default nil;
  end;

En el Onclose de esta ventana:
if Assigned(Finforma) then Finforma(Codigo);

Form1, Form2 y Form3 harían lo siguiente:
Código Delphi [-]
  FormConsulta := TformaConsulta.Create(...);
  FormConsulta.InformarA := llamamePepe;

por supuesto, Form1, Form2 y Form3 deben tener un prodecimiento: LlamamePepe;
Código Delphi [-]
procedure Tform1.llamamePepe(const Codigo:integer);
begin
   showmessage(' El form de consulta se ha cerrado y ha seleccionado' +
 inttostr(codigo));
end;

Atención!!!: no se informa a las 3 ventanas, solo a la ultima que haya llamado a FrmConsulta.

Tambien se me ocurre que ese evento se lance cuando se cambia el codigo de cliente en el Formconsulta, esta rallada quedaría así:

Código Delphi [-]
// defino mi evento
type  TinformarA: procedure (const codigoSeleccionado:integer) of object;

type
  TFormaConsultas = class(TForm)
  private
    FInforma:TinformarA;
    FCodigo: Integer;
    procedure SetCodigo(Value:integer);
  public
    property Codigo: Integer read FCodigo write SetCodigo;
    property InformarA:TinformarA read Finforma, write Finforma default nil;
  end;

procedure TformaConsulta.SetCodigo(value:integer);
begin
  if Value <> Fcodigo then
  begin
     Fcodigo := Value;
     if assigned(Finforma) then Finforma(Fcodigo);
  end;
No sé si me he rallado un poco pero la cosa funciona

Saludos
Responder Con Cita