Hola study.
Si no entendí mal tu planteo, podrías hacer de este modo:
FormA:
Código Delphi
[-]
...
type
TFormA = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure FormBHasClosed(Sender: TObject);
public
end;
var
FormA: TFormA;
implementation
uses Unit2;
procedure TFormA.FormBHasClosed(Sender: TObject);
begin
Caption:= 'FormB se ha cerrado';
end;
procedure TFormA.FormShow(Sender: TObject);
begin
with TFormB.Create(Self) do
begin
HasClosed:= FormBHasClosed;
Show;
end;
end;
...
FormB:
Código Delphi
[-]
...
type
TNotifyEvent = procedure(Sender: TObject) of object;
TFormB = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FCloseEvent: TNotifyEvent;
public
property HasClosed: TNotifyEvent read FCloseEvent write FCloseEvent;
end;
var
FormB: TFormB;
implementation
procedure TFormB.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(FCloseEvent) then
FCloseEvent(Self);
end;
...
Saludos.