Fórum Capturar Alterações #618613

25/08/2022

0

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

Responder

Post mais votado

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.

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

26/08/2022

Lucas Santato

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;
Responder

Gostei + 0

26/08/2022

Emerson Nascimento

implemente isso no evento OnStateChange do DataSource
Responder

Gostei + 0

26/08/2022

Willian Rodrigues

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.
Responder

Gostei + 0

27/08/2022

Raimundo Pereira

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;

Responder

Gostei + 0

29/08/2022

Willian Rodrigues

Show de Bola, testei aqui e funcionou perfeitamente!!
Muito Obrigado.
Responder

Gostei + 0

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

Aceitar