Capturar Alterações

Delphi

25/08/2022

Olá Pessoal! Precisando de uma ajudinha dos universitários kkkk.
Tenho um simples cadastro, quando clico no botão: "Salvar" configurei para que após ser "Salvo" o mesmo seja desabilitado.(Até aí tudo bem!!)
Aí vem o problema: Se o registro já está "Salvo" gostaria de saber se existe uma maneira de a medida que o usuário alterar essas informações já gravadas, o Botão: "Salvar" seja habilitado.

Passo 1: Salvei o registro
Passo 2: Registro gravado e Botão foi desabilitado
Passo 3: No mesmo registro, agora estou fazendo qualquer alteração e o Delphi está entendo que é uma alteração e habilita o botão "Salvar".

Procurei muitos eventos, mas não encontrei nada que controla ou captura alterações dentro de um Form nesse sentido.
Willian Rodrigues

Willian Rodrigues

Curtidas 1

Melhor post

Emerson Nascimento

Emerson Nascimento

29/08/2022

no OnStateChange do DataSource coloque apenas:

ButtonSalvar.Enabled := ((Sender as TDataSource).DataSet.State in [dsEdit, dsInsert]);

note que para funcionar desta maneira o DataSource precisa ser instanciado no mesmo form onde está o botão Salvar.

GOSTEI 1

Mais Respostas

Lucas Santato

Lucas Santato

25/08/2022

Olá Pessoal! Precisando de uma ajudinha dos universitários kkkk.
Tenho um simples cadastro, quando clico no botão: "Salvar" configurei para que após ser "Salvo" o mesmo seja desabilitado.(Até aí tudo bem!!)
Aí vem o problema: Se o registro já está "Salvo" gostaria de saber se existe uma maneira de a medida que o usuário alterar essas informações já gravadas, o Botão: "Salvar" seja habilitado.

Passo 1: Salvei o registro
Passo 2: Registro gravado e Botão foi desabilitado
Passo 3: No mesmo registro, agora estou fazendo qualquer alteração e o Delphi está entendo que é uma alteração e habilita o botão "Salvar".

Procurei muitos eventos, mas não encontrei nada que controla ou captura alterações dentro de um Form nesse sentido.

Acho que daria certo colocar no evento OnChange dos campos o ButtonSalvar.Enabled := True;
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/08/2022

implemente isso no evento OnStateChange do DataSource
GOSTEI 0
Willian Rodrigues

Willian Rodrigues

25/08/2022

Tentei fazer dessa maneira, mas não deu certo, porquê ele pega alterações feito no registro.(Inclusão, Gravar...)

fiz um teste bem simples, coloquei um ShowMessage para mostrar quando o evento está disparando.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

25/08/2022

Vai até o datasource no evento OnStateChange

If Tabela.State in [dsEdit, dsInsert] then
begin
ButtonSalvar.Enabled:=true;
end
else
begim
ButtonSalvar.Enabled:=False;
end;

GOSTEI 0
Willian Rodrigues

Willian Rodrigues

25/08/2022

Show de Bola, testei aqui e funcionou perfeitamente!!
Muito Obrigado.
GOSTEI 0
POSTAR