Abrir o Mesmo Form Varias Vezes

Delphi

30/12/2003

Ola a todos, Estou com um probleminha, e agradeco a ajuda de todos.

Eu tenho um form frmMsg ( exemplo ).

E eu preciso abri-lo varias vezes ao mesmo tempo e cada um com uma mensagem diferente, so que ao fechar um eu tenho problema com os outros, pois o mesmo ja foi fechado na memoria, a rotina para abertura é esta.

frmMsg := TfrmMsg.Create(nil);
frmMsg.wMsg := form1.ADOThrMSG.AsString;
frmMsg.Show;

e para fechamento é esta.

frmMsg.Update;
frmMsg.hide;
frmMsg.free;
Action := caFree;

Esta aplicação seria tipo um post-it, onde tenho uma tabela de compromissos e a thread fica varendo a tabela e quando chega um compromisso ela mostra a mensagem na tela, entao este form podera aparecer varias vezes ao mesmo tempo e ser fechado sem ordem prevista.

Tem alguma maneira para resolver isto ou posso atribuir um nome aleatoriamente ao form, na criacao do mesmo.


Icheuk

Icheuk

Curtidas 0

Respostas

Luizfernando777

Luizfernando777

30/12/2003

Td bem Colega,
tenta fazer o seguinte:

Na criação continue usando o mesmo procedimento
qdo vc for fechar
no evendo onClose do frmMsg
coloque
frmMsg := nil;
action := caFree;
só isso.

Errado
frmMsg.Update; // não precisa
frmMsg.hide; // não precisa
frmMsg.free; // não precisa
Action := caFree


GOSTEI 0
Emiyasaki

Emiyasaki

30/12/2003

Eu faria diferente:

Criaria uma procedure (ou método, de preferência), da seguinte forma:

procedure TMainForm.MostraMensagem(Msg: string);
var
  Frm: TfrmMsg;
begin
  Frm := TfrmMsg.Create(Self);
  Frm.wMsg := Msg;
  Frm.Show;
end;


No fechamento, em TfrmMsg, no evento OnClose:

procedure TfrmMsg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Self.Update;
  Action := caFree;
end;



GOSTEI 0
Icheuk

Icheuk

30/12/2003

Legal, funcionou !

Obrigado a todos.


GOSTEI 0
POSTAR