Ver Mensaje Individual
  #4  
Antiguo 01-07-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola etioalex.

Si los forms involucrados están corriendo en un mismo equipo, otra manera que se me ocurre es usando FindWindow y el mensaje WM_COPYDATA.

Pone esto en el evento OnClose del Form2:
Código:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
var
  HandleReceptor: THandle;
  CopyDataStruct: TCopyDataStruct;
begin
  CopyDataStruct.dwData:= 1; // cualquier valor para evaluar en Form1
  HandleReceptor:= FindWindow(PChar('TForm1'),PChar('Form1'));
  if HandleReceptor <> 0 then
    SendMessage(HandleReceptor,WM_COPYDATA,Integer(Handle),
      Integer(@CopyDataStruct));
  Action:= caFree;
end;
Y este código en el otro form:
Código:
  TForm1 = class(TForm)
  private
    procedure WMCopyData(var Msg : TWMCopyData) ; message WM_COPYDATA;
  public
  end;
  ...
implementation
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
begin
  if  Msg.CopyDataStruct.dwData = 1 then
    ShowMessage('Form2 ha sido cerrado'); // acá hace lo que gustes
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-07-2010 a las 17:33:37.
Responder Con Cita