GARANTIR DESCONTO

Fórum erro is not a valid floating point value - ao clickar edtData #402879

11/06/2011

0

Oi, Colegas! seguinte tenho 2 dbgrids em um mesmo form ele soma as colunas e joga o saldo em edtSaldo.text no evento onkeydown coloquei o cód que fáz os calculos no automatico No evento onclick do do form eu fiz:  edtdata.setfocus;  tblSaida.Insert; Assim ao clickar no campo data (dbEdit) automaticamente cria uma nova linha no dbgrid colocando a tabela em modo de edição ou inserção onde o usuario so digita sem precisar apertar nenhum botão. É ai na hora doclick que da o erro 'isso não é ponto de valor flutuante válido' abaixo um fragmento do código onde está o erro!   procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var a,b, soma:double;
begin
if key=vk_return then SelectNext(ActiveControl, true,true);
     a:=StrToFloat(edtTotal1.Text);
     b:=StrToFloat(edtTotal.Text);
     soma:=(a-b);
 edtsaldo.Text:=FormatFloat('R$ ##,##0.00',soma);   end;    
Lauro

Lauro

Responder

Posts

13/06/2011

Eliel Martins

  Olá Lauro !

  O problema que está ocorrendo é porque você colocou no evento OnKeyDown, bom o problema em sí nem é por causa do evento e sim quando você tenta converte uma string para float, e nesse momento o componente está sem preencher, então o que pode ser feito é colocar um verificação para ver se ele está vazio, se tiver vazio não fazer a conversão, segue abaixo o exemplo de como corrigir isso :

 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
 a,
 b,
 soma :Double;
begin
  Soma := 0;

  if key=vk_return then
    SelectNext(ActiveControl, true,true);

  if Trim(edtTotal1.Text) <> '' then
    a:=StrToFloat(edtTotal1.Text);
  if Trim(edtTotal.Text) <> '' then
    b:=StrToFloat(edtTotal.Text);

  soma := (a-b);

  edtsaldo.Text:=FormatFloat('R$ ##,##0.00',soma);
end;
  


  Basicamente é isso que está ocorrendo o erro, agora você está utilizando um edit para fazer calculo, deve fazer algumas validações para somente permitir o usuário a digitar número e não letras, porque o usuário digitar uma letra e no momento de converte de string para float vai dar outro erro.

  Espero ter ajudado.

  Eliel G. Martins

Responder

Gostei + 0

13/06/2011

Lauro

Obrigado Eliel, vou testar aqui depois posto aqui o resultado, abraços caso queira me add no msn lauropogozelski@hotmail.com abraços e uma ótima semana!
Responder

Gostei + 0

27/06/2011

Lauro

Obrigado Eliel, vou testar aqui depois posto aqui o resultado, abraços caso queira me add no msn lauropogozelski@hotmail.com abraços e uma ótima semana!
Olá Eliel, desculpe a demora em responder, estava viajando, obrigado pela ajuda problema resolvido, abraço e sucesso por ai.
Responder

Gostei + 0

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

Aceitar