Abrir o Mesmo Form Varias Vezes
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.
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
Curtidas 0
Respostas
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
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
30/12/2003
Eu faria diferente:
Criaria uma procedure (ou método, de preferência), da seguinte forma:
No fechamento, em TfrmMsg, no evento OnClose:
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
30/12/2003
Legal, funcionou !
Obrigado a todos.
Obrigado a todos.
GOSTEI 0