Fórum Evento - onclose....Dúvidas..... #233889

23/05/2004

0

Estou prescisando de uma ajuda meio iluzitada....analizem o q eu fiz....
* Fiz um cadastro de contas a pagar que começa com um form onde tem as informações sobre as contas...tipo parcelas juros decontos e etc...
* Neste mesmo Form tenho um botão q me dá acesso ao cadastro de contas a pagar...neste momento é gerado um novo form onde tenho as mesmas tabelas do form anterior que são ativadas, faço todo o prescesso de cadastro, e para atualizar a tabela o primeiro form, no evento on close do segundo formulário é colocado um Form1.Table1.close e seguido de umForm1.Table.open....fazendo isto os dados inseridos no segundo formulário são atualizados no primeiro....
* Agora presciso chamar este segundo form de outro ponto do programa, más quando peço para sair esté dá um PAUUUUU, proveniente do evento on close... ( o primeiro form neste momento não está criado...)..
* Pensei ...será que existe uma condição...do tipo, se form1 estiver presente executa as funções da tabela, caso contrário ignora....

Isso é meio complicado...
se alguém quiser dá uma mãosinha eu agradeço.... até mais...

Gilmar C. Moraes


Gigatel

Gigatel

Responder

Posts

23/05/2004

Adilsond

O correto seria fazer a atualização (Close e Open) no próprio Form1, logo após o Form2.ShowModal;


Responder

Gostei + 0

23/05/2004

Gigatel

O correto seria fazer a atualização (Close e Open) no próprio Form1, logo após o Form2.ShowModal;


Analiza....na primeira condição...o primeiro form já estará aberto...como faria para atualizar sem ter que adicionar um botão....


Responder

Gostei + 0

23/05/2004

Adilsond

if Form1 <> nil then
begin
Form1.Table.Refresh;
end;

Mas para que o ´if Form1 <> nil´ funcione, no evento onClose do Form1 coloque: ´Form1 := nil;´.


Responder

Gostei + 0

23/05/2004

Gigatel

if Form1 <> nil then begin Form1.Table.Refresh; end; Mas para que o ´if Form1 <> nil´ funcione, no evento onClose do Form1 coloque: ´Form1 := nil;´.



Como faço para inserir o seu codigo, sem interferir neste estrututa...

procedure T_FormContas.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
_FormCRReceb.Table1.Close;
_FormCRReceb.Table1.Open;
_FormCRReceb.Table2.Close;
_FormCRReceb.Table2.Open;
_FormCRReceb.Table3.Close;
_FormCRReceb.Table3.Open;
_FormCRReceb.Table4.Close;
_FormCRReceb.Table4.Open;
if Table2.State in [dsInsert, dsEdit] then
begin
if Application.MessageBox(´Gravar alterações ?´, ´Registro alterado.´, MB_ICONQUESTION
+ MB_YESNO) = IDYES then
Table2.Refresh
else
Table2.Cancel;
end;
Action := cafree;
end;


Responder

Gostei + 0

24/05/2004

Adilsond

procedure T_FormContas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Table2.State in [dsInsert, dsEdit] then
     begin
       if Application.MessageBox(´Gravar alterações ?´, ´Registro alterado.´,
          MB_ICONQUESTION + MB_YESNO) = IDYES then
          Table2.Post
       else
          Table2.Cancel;
     end;
  Table2.Close; // não se esqueça de fechar suas tabelas
  if _FormCRReceb <> nil then
     begin
       _FormCRReceb.Table1.Refresh;
       _FormCRReceb.Table2.Refresh;
       _FormCRReceb.Table3.Refresh;
       _FormCRReceb.Table4.Refresh;
     end;
  Action := cafree;
  _FormContas := nil; // Caso necessite verificar se o formulario existe
end;


não se esqueça de colocar no evento onClose do _FormCRReceb:

begin
  Action := caFree;
  _FormCRReceb := nil;
end;



Responder

Gostei + 0

25/05/2004

Gigatel

procedure T_FormContas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Table2.State in [dsInsert, dsEdit] then
     begin
       if Application.MessageBox(´Gravar alterações ?´, ´Registro alterado.´,
          MB_ICONQUESTION + MB_YESNO) = IDYES then
          Table2.Post
       else
          Table2.Cancel;
     end;
  Table2.Close; // não se esqueça de fechar suas tabelas
  if _FormCRReceb <> nil then
     begin
       _FormCRReceb.Table1.Refresh;
       _FormCRReceb.Table2.Refresh;
       _FormCRReceb.Table3.Refresh;
       _FormCRReceb.Table4.Refresh;
     end;
  Action := cafree;
  _FormContas := nil; // Caso necessite verificar se o formulario existe
end;
não se esqueça de colocar no evento onClose do _FormCRReceb:
begin
  Action := caFree;
  _FormCRReceb := nil;
end;



AdilsonD .... Gostaria de agradecer pela sua ajuda, e avisar que deu sertinho...e te dar parabéns pela forma explicida que vc explica, isso é bom... fiva aki meus agradecimentos...valeu....

Gilmar C. Moraes


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar