Forum > Portuguese

Problema validando campos de um dataset

(1/1)

joaoclobocar:
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: ---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;

--- End code ---
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.

Navigation

[0] Message Index

Go to full version