Assim funciona. procedure TForm1.TesteKeyPress(Sender: TObject; var Key: Char); begin
if (not (Key in ['0'..'9', DecimalSeparator, #8, #9, #13])) or ((not (Key in [#8, #9, #13])) and (Pos(DecimalSeparator, (Sender as TEdit).Text) > 0) and ((Pos(DecimalSeparator, (Sender as TEdit).Text) + 1) < Length((Sender as TEdit).Text))) or ((Key = DecimalSeparator) and (Pos(DecimalSeparator, (Sender as TEdit).Text) > 0)) then Key := #0; end; Eduardo ca_programador007 escreveu: > > Olá caros amigos > > Tô quebrando a cabeça com um tratamento no campo de valor... > utilizando o codigo abaixo no evento onexit do edit, ele não trata os > centavos, e nem quando os valores são grandes..... se não trata quando > o usuário digita ,,,,, (varias virgulas) > gostaria que desse uma mensagem quando o usuario digita varias > virgular sem querer....... > e os centavos que não estao corretos.. > alguem tem alguma funcao mais adequada para isso? > ps: o campo valor no banco é do tipo numeric 15,2 > desculpem a ignorancia > > begin > try > edit1.text:=formatfloat('###,###,##0.00',strtofloat(edit1.text)); > except > showmessage('Este Valor é Inválido!'); > end; > > Carlinhos_007 > > __________________________________________________ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ <http://br.messenger.yahoo.com/> > > [As partes desta mensagem que não continham texto foram removidas] > > _______________________________________________________ Yahoo! Mail - Sempre a melhor opção para você! Experimente já e veja as novidades. http://br.yahoo.com/mailbeta/tudonovo/