Executar um codigo ao fechar form exibido com o show

Delphi

02/10/2008

Pessoal,

todos os forms do meu programa eu exibo usando o showmodal, e o showmodal aguarda o fechamento do form para a execução dos código na sequencia. exemplo:

form1 := Tform1.create(nil);
form1.showmodal;
showmessage(´form fechado´);


beleza, nesse codigo acima ele so mostra a mensagem quando o form for fechado.
O que eu quero é ter esse mesmo procedimento, mas usando apenas o show, pois estou criando uma aplicação MDI.

Eu poderia colocar este codigo pra ser chamado diretamente do form child que estou criando, mas não quero fazer referencia ao form principal dentro do form child, pois ele é usado em mais de uma aplicação.
Como posso controlar isso diretamente do form principal?

Obrigado.


Prgdelphi

Prgdelphi

Curtidas 0

Respostas

Marcosrocha

Marcosrocha

02/10/2008

no Form PAI você deverá criar uma procedure do tipo close.
TFormPai = class(TForm)
  BitBtn1: TBitBtn;
  procedure BitBtn1Click(Sender: TObject);
  procedure ChildFormClose(Sender: TObject; var Action: TCloseAction);
private
  { Private declarations }
public
  { Public declarations }
end;

var
  FormPai: TFormPai;

implementation

{$R *.dfm}

procedure ChildFormClose(Sender: TObject; var Action: TCloseAction);
begin
  MessageDlg(´O Child foi FECHADO!´, mtInformation, [mbOK], 0);
  Action := caFree;
end;

E no evento que cria esse form FILHO.
procedure TFormPai.BitBtn1Click(Sender: TObject);
begin
  Application.CreateForm(TFormChild, FormChild);
  FormChild.OnClose := ChildFormClose;
  FormChild.Show;
end;



GOSTEI 0
Prgdelphi

Prgdelphi

02/10/2008

Marcos, obrigado pela solução... realmente, não tinha pensado dessa maneira. Deu certinho aqui...


GOSTEI 0
POSTAR