Cadas decimais em DBEdit

11/04/2013

1

SQL

Olá estou iniciando agora em programação.

preciso formatar um DBEdit e não estou conseguindo. Alguém pode me ajudar?

É o seguinte: Preciso que meu DBEdit no envento OnExit fique assim: 1.650,00.
Eu uso como ligação o ADOTable.

Alguém me ajuda por favor...
Responder

Posts

12/04/2013

Joel Rodrigues

Testa o seguinte:
meuEdit.Text := FormatFloat('#,##0.00',StrToFloat(meuEdit.Text));
Responder

12/04/2013

Joel Rodrigues

Olá, por favor mantenha apenas um tópico para tratar de cada assunto. Esta mesma questão foi aberta no seguinte tópico:
[url]http://www.devmedia.com.br/forum/cadas-decimais-em-dbedit-no-evento-onexit/439503[/url]
Responder
Testa o seguinte:
meuEdit.Text := FormatFloat('#,##0.00',StrToFloat(meuEdit.Text));


Caro colega não deu certo. Está aparecendo a seguinte mensagem:


Project TimeCard.exe raised exception class EconvertError with message “1.650,00” is not a valid floating point value. Process stopped. Use Step or Run to continue.


O que pode estar ocorrendo?
Antes eu já havia utilizado este código que vc me passou. Mas muito obrigado pela atenção.
Se puder continuar me ajudando agradeço.
Responder

12/04/2013

Joel Rodrigues

Rapaz, é o seguinte. Se você digitar "1650", beleza, ele converte pra float e formata. Se você digitar "1.650,00", por causa da formatação, ele não reconhece como um float válido.
Mas, considerando que o usuário não segue regras. Uma hora digita com formatação, outra hora, sem formatação nenhuma, o que você pode fazer? Uma opção é "fingir" que está tratando a exceção de erro de formatação (EConvertError) e deixar passar caso essa exceção seja capturada.
Por exemplo:
  try
    meuEdit.Text := FormatFloat('#,##0.00',StrToFloat(meuEdit.Text));
  except
  on E : EConvertError do
//aqui você trataria a exceção, mas apenas deixe passar
  end;


Isso está certo? Bem, certo mesmo não está, pois outros erros relativos a formato podem ocorrer. Por exemplo: se você digitar um valor qualquer não numérico, vai passar.
Aí você enfrenta um dilema: é preciso REALMENTE formatar esse campo nesse momento? Isso só você pode definir.
Responder