GARANTIR DESCONTO

Fórum FloatToStr #196867

24/11/2003

0

Para colocar um valor em espécie, real, eu faço o seguinte:

1) edit.text digito o valor, por exemplo: 20 (para R$20,00)
2) No evento on exit do edit faço uma variavel currency receber o campo edit e depois o edit receber a variavel, exemplo

vvalor:=strtofloat(edit.text);
edit.text:=floattostrf(vvalor,fffixed,10,2);

no edit fica assim ´20,00´;

no caso se existir centavos , o comando só aceita ´,´ tem como fazer ele aceitar ´.´ tambem ???????


Arc

Arc

Responder

Posts

24/11/2003

Skaarj

Brother, dá um look: http://www.clubedelphi.com.br/exemplos/aceitaponto.zip

Boa sorte!![/code]


Responder

Gostei + 0

24/11/2003

Yankleber

Olá!

Meu amigo, essa aí é braba!

Eu cortei um dobrado por causa disso quando estava escrevendo minha primeira aplicação em VB, pois como o Windows reconhece automaticamente o idioma nativo instalado no seu computador, ele sabe que o separador decimal para o Brasil é a vírgula e não o ponto. Até aí nada, mas acontece que quando você tenta passar um parâmetro com casas decimais em uma transação SQL, o negócio dá pau porque o interpretador SQL pensa que o que vem depois da vírgula é um outro parâmetro e não parte do mesmo (o SQL usa vírgulas para separar parâmetros). Não tenho certeza, mas acho que dá problema também quando você tenta salvar na tabela mesmo sem SQL, usando métodos do próprio BDE (acho que o Delphi ignora a parte decimal, ou então dá um erro).

Bem, seja como for, depois de um tempo, acabei descobrindo que isso acontece em todas as linguagens, e não há meio de contornar este problema diretamente, a não ser escrevendo uma função que faça o seguinte: quando você clicar no botão salvar ou confirmar ou ok ou seja lá o que for, antes de montar a sua SQL, a função deve pegar o valor do TEdit e substituir a vírgula por ponto e mandar para a SQL o valor já convertido, e ele será gravado no banco de dados na forma 20.00. Quando você ler o valor de volta, do banco de dados para o TEdit, não precisa desconvertê-lo pois o Delphi e o Windows já o farão automaticamente (transformarão o ponto em vírgula). Infelizmente essa é a única forma de fazer a coisa.

Mas não se desanime, pois a função é fácil de escrever: é um simples loop for-next de busca e substituição...

Contudo, se sentir dificuldade em fazê-la, é só dizer que eu mando para você.

Um abraço!


Responder

Gostei + 0

24/11/2003

Marcelo Saviski

eu costumo fazer assim:

na hora da digitação, no evento OnKeyPres do Edit´s:

if Key in [´,´, ´.´] then
  Key := DecimalSeparator ;


funciona satisfatoriamente


Responder

Gostei + 0

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

Aceitar