Recent

Author Topic: Problema validando campos de um dataset  (Read 3144 times)

joaoclobocar

  • Newbie
  • Posts: 2
Problema validando campos de um dataset
« on: May 13, 2021, 08:33:25 pm »
Estou mudando para o Lazarus mas não consigo fazer a validação de campos a medida que são digitados.
Criei o evento OnSetText e lá fiz a validação, levantando uma exceção caso o campo esteja inconsistente.
Code: [Select]
procedure TModelLancamentoFinanceiro.SetTextValorDocumento(Sender: TField; const aText: string);
var
  Valor : Currency;
begin
  Valor := StrToCurr(aText);
  if Valor <> 1 then
  begin
    raise Exception.Create(Format('o conteúdo %s não é válido para o campo %s', [aText, 'Valor']));
  end
  else
    Sender.AsCurrency := Valor;
end;
Digitei 2 no DBEdit associado ao valor do pagamento.
Quando teclo Enter no DBEdit, a exception é lançada e o valor do campo volta a ser exibido no DBEdit.
Até aí tudo bem.
Quando teclo Tab ou mudo de campo utilizando o mouse, a exception é lançada, o curso vai para o próximo campo e o valor exibido no DBEdit passa a ser o novo valor (o inconsistente). Apesar de o valor do campo permanecer inalterado, o usuário continua vendo o "2" no DBEdit.
Há alguma forma de permanecer no DBEdit enquanto o seu conteúdo estiver inválido?
Procurei bastante encontrar formas de fazer isto, mas não encontrei.

 

TinyPortal © 2005-2018