Fórum Evento OnCloseQuery do Form e problemas #298476
05/10/2005
0
olá pessoal
estou utilizando no meu sistema o evento Onclosequery do Form, para verificar se existem registros em insert ou edit.
caso exista eu perunnto ao usuário : ´salvar o registro não salvo?´, aí apresento as opção
mryes
mrNo
mrCancel
se ele cancelar, Canclose recebe False e o form não é fechado.
se ele optar por Não salvar, dá um Table.cancel e fecha o form.
o Problema está no salvar, caso ele clique em Sim. pq no salvar eu executo o BtnSalvarOnclick(self); e após fecho o form.
só que se ocorrer algum erro no salvar, como por exemplo campos obrigatórios, ele não salva e fecha o form mesmo assim.
existe alguma maneira de saber se BtnSalvarOnclick(self) foi executado com sucesso, pra só após fechar o form ?
obrigado
Diogo
estou utilizando no meu sistema o evento Onclosequery do Form, para verificar se existem registros em insert ou edit.
caso exista eu perunnto ao usuário : ´salvar o registro não salvo?´, aí apresento as opção
mryes
mrNo
mrCancel
se ele cancelar, Canclose recebe False e o form não é fechado.
se ele optar por Não salvar, dá um Table.cancel e fecha o form.
o Problema está no salvar, caso ele clique em Sim. pq no salvar eu executo o BtnSalvarOnclick(self); e após fecho o form.
só que se ocorrer algum erro no salvar, como por exemplo campos obrigatórios, ele não salva e fecha o form mesmo assim.
existe alguma maneira de saber se BtnSalvarOnclick(self) foi executado com sucesso, pra só após fechar o form ?
procedure TFrm1F.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if((Tbl1.State = dsinsert)or (Tbl1.State = dsedit))then begin case DtMdlGcm1.BsMsg.MessageDlg(´O registro atual não foi salvo.´+#13+10+´Salvar antes de fechar ?´, mtConfirmation, [mbYes,mbNo,mbCancel], 1)of mryes : begin BtnSalvar.Onclick(self); end; mrno : begin Tbl1.Cancel; end; mrcancel : begin Canclose := False; end; end; end; |
obrigado
Diogo
Diogoalles
Curtir tópico
+ 1
Responder
Post mais votado
05/10/2005
Em vez de você fazer essa coisa horrivel que é chamar um evento, cria uma função que retorne true ou false. Se a gravação dos dados ocorrer com sucesso então retorna true e fecha o form. Senão, retorna false e não fecha o form.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var DialogResult: Word; begin if (Tbl1.State in [dsinsert, dsEdit]) then begin DialogResult := MessageDlg(´O registro atual não foi salvo.´+ 13 + 10 + ´Salvar antes de fechar?´, mtConfirmation, [mbYes,mbNo,mbCancel], 1); if DialogResult = mrYes then CanClose := SalvaRegistro() else if DialogResult = mrYes then Tbl1.Cancel; else Canclose := false; end; end;
Rjun
Responder
Gostei + 2
Clique aqui para fazer login e interagir na Comunidade :)