erro is not a valid floating point value - ao clickar edtData
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;
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
Curtidas 0
Respostas
Eliel Martins
11/06/2011
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 :
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
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
GOSTEI 0
Lauro
11/06/2011
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!
GOSTEI 0
Lauro
11/06/2011
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.
GOSTEI 0