Array
(
)

Fechar formulário e perguntar se deseja gravar...

Placido
   - 13 ago 2004

Meus amigos do forum

Como proceder para perguntar para o usuário se deseja gravar as alterações
efetuadas no momento que clica no botão fechar?

Utilizo o componente do dbexpress e delphi7.

Ex o meu cliente fez algumas alterações e fechou o formulário, consequente nao
gravou.

Se o usuario faz uma alteração não da o enter, mas fecha o formulário, tambem
quero perguntar se deseja gravar a alterção.
Algume poderia me ajudar?



´Nós servimos a Deus quando servimos os outros´


Plácido/Ellen


Paullus
   - 13 ago 2004

No evento OnCloseQuery do seu Form você adiciona o seguinte código:

#Código

CanClose := Application.MessageBox(´Deseja gravar as alterações?´, ´Confirmação´, MB_ICONQUESTION + MB_YESNO) = IDYES;

if CanClose then
begin
// execute a sua rotina de gravação
end;


Espero ter ajudado.
Até mais


Lucas Silva
   - 13 ago 2004

Eu faço o seguinte:
Crio uma variável boleana no form.
e no form create eu seto ela para False;

Em cada componente no OnChange, ou onKeyPress eu seto esta variável pra true

* No clique do botão salvar, vc seta ela pra False tb...


No form close, se esta variavel for True, vc exibe uma msg perguntando se o usuário deseja salvar


Rômulo Barros
   - 13 ago 2004

#Código

Evento OnClose do Seu Formulário(Var Action : TCloseAction; Sender : TObject);
Var
Resposta : Word;
Begin
With(Query)Do
Begin
If(State In [dsInsert,dsEdit])Then // Se estava inserindo ou alterando...
Begin
Resposta := MessageDlg(´Deseja Salvar as Alterações?´,mtInformation,mbYesNoCancel,0);
Case Resposta Of
mrYes: Post();
mrNo: Cancel();
Else
Action := caNone; // Não deixa fechar o formulário
End;
End;
End;
End;





Placido
   - 13 ago 2004

Meus amigos e amigas obrigaduuuu pelas dicas, implementei e funcionou.
Abraço a todos...


Tnaires
   - 13 ago 2004

Olá
Só pra complementar: vc precisa tratar qualquer erro q possa vir a acontecer no momento do fechamento do form. Por exemplo: se o cara deu um insert e depois foi fechar o form, o programa pergunta se ele quer gravar. Então, ele clica em sim, e daí ocorre um erro. Isso pq campos requeridos não foram preenchidos.
Abraços.