Fórum Problemas com formatação... #272716
16/03/2005
0
analizem ...tenho um edit onde vou digitar um certo valor...
gostaria que formatace dessa forma
Digitei 500 aparece 500,00
Digitei 5000 aparece 5000,00 ( sem ponto msm )
query1.fieldbyname(´valor´).value:=formatfloat(´ ,#,,0.00´,v_Valor);
queria que funcionace no lugar do código acima...
t+ galera...
Gigatel
Curtir tópico
+ 0Posts
17/03/2005
Andremuller
Troque a propriedade DisplayFormat para 0.00;- 0.00 e o resultado será o formato que estás procurando.
Gostei + 0
17/03/2005
Gigatel
Gostei + 0
17/03/2005
Andremuller
então pode baixar dali.
Também dá pra fazer um tratamento semelhante da seguinte forma
procedure TForm1.Edit1Exit(Sender: TObject); var oEdt: TEdit; begin oEdt := Sender as TEdit; if trim(oEdt.Text) <> ´´ then try oEdt.Text := FormatFloat(´0.00´, StrToFloat(oEdt.Text)); except ShowMessage(´Valor incorretamente digitado.´); oEdt.SetFocus; end; end;
aí é só apontar os outros eventos onExit dos teus outros edits para esse acima.
Resolveu?
Gostei + 0
17/03/2005
Marcio.theis
Gostei + 0
17/03/2005
Gigatel
Gostei + 0
17/03/2005
Andremuller
Agora é só tu decidir como resolver.
Se nenhuma das duas opções te resolve o problema me avisa porque que a gente pensa em outra coisa.
Gostei + 0
17/03/2005
Gigatel
Notas abaixo de 999,99 reais o programa computa e fas os calculos sem problemas . passou de 1.000,00 dá a seguinte mensagem.
1.000,00 is not a valid floating point value.
issó tá me deixando de cabelo em pé, custei a botar o programa funcionar e agora dá este pau danado...por isso a fomatação teria que ser algo assim 1000,00 e não 1.000,00
vlw...
Gostei + 0
17/03/2005
Gigatel
Gostei + 0
17/03/2005
Andremuller
Tu tá lendo isso do banco? Armazenando que que formato então?
Se tu estiver gerando esse número na hora como tu tá chegando nessa formatação, ele está como string?
Gostei + 0
17/03/2005
Marcio.theis
function FormataNumero(num: string): string; var str: string; x: integer; begin str:=num; for x:=1 to length(str) do if str[x] = ´,´ then str[x]:=´.´; FormataNumero:=str; end;
no qual para usar a função você somente passa o seu valor para string da seguinte forma
FormataNumero(FloatToStr(tblReceberVLRECEBER.Value));
sendo que assim ira lhe retornar uma string podendo ser inserido via insert no banco.
Gostei + 0
17/03/2005
Silviogs
o componentes RX que se fala, está dispoível aqui na clubedelphi para Download na seçao componentes-diversos.
Atenciosamente
Silvio Guedes
Gostei + 0
17/03/2005
Gigatel
http://geocities.yahoo.com.br/gigatelsoft/01.JPG
http://geocities.yahoo.com.br/gigatelsoft/02.JPG
Gostei + 0
17/03/2005
Andremuller
Se for então quando tu for calcular o valor como tu está acessando esse campo?
porque se tu acessar da forma TeuField.AsFloat não deve dar problema
Cara, senão, para facilitar, manda o trecho de código que tá dando esse erro.
Não precisa ser toda a função, as linhas que geram o erro já vão ajudar a entender melhor.
Gostei + 0
17/03/2005
Gigatel
Tá certo... vamos explicar...na primeira imagem é onde funciona o cadastro das notas e a segunda imagem é onde faço a manutenção das notas ( baixa, juros, descontos etc )...vamos lá.
no desenho o grid tem um valor...( 1.000 ) este valor só aparece depois que eu pressionar o botão concluir , neste botão se processa várias coisas, faz a divisão se nescessário ( no exemplo veja que só tem uma parcela )e lança o mesmo na contas á receber... o código responsável pela parcela é este abaixo, e é onde tem uma função de formatação que vai ser gravado num banco de dados onde os mesmo serão calculados posteriormente ( e aí que tá problema ).
procedure T_FormContas.Geraparcelas(Sender: TObject);
var
v_count,v_parc: integer;
v_date:Tdatetime;
v_valor:REAL;
begin
Table2.Edit;
Table2Valor.value := edvalor.text;
Table2Parcelas.value := edparcela.Text;
Table2DataCad.Value := formatDateTime(´dd/mm/yyyy´,Date);
Table2Tipo.Value := ´C´;
Table2.Refresh;
v_date:=strtodate(eddata.text)+ strtofloat(ComboBox2.text);
v_count:=strtoint(edparcela.text);
v_parc:=1;
Query1.Open;
while v_count>0 do
begin
Query1.insert;
Query1.FieldByName(´QuantParcelas´).asinteger:=(v_parc);
V_VALOR:=((strtofloat(edvalor.text)-strtofloat(edentrada.text)))/strtoint((edparcela.text));
query1.fieldbyname(´valor´).value:=formatfloat(´ ,#,,00´,v_Valor);
query1.FieldByName(´Vencimento´).asdatetime:=v_date;
Query1CodControle.value := Table2CodSistema.value;
Query1Endereco.value := Table2Endereco.Value;
Query1Nome.value := Table2Nome.Value;
Query1Complemento.value := Table2Complemento.value;
Query1Bairro.value := Table2Bairro.value;
Query1Cidade.value := Table2Cidade.Value;
Query1UF.value := Table2UF.value;
Query1CPFCNPJ.value := Table2CPFCNPJ.value;
Query1Discricao.value := Table2Discricao.value;
Query1DATA_CAD.Value := formatDateTime(´dd/mm/yyyy´,Date);
Query1CodAcess.Value := Table1Codigo.value;
Query1.post;
v_count:=v_count-1;
v_parc:=v_parc+1;
v_date:=v_date+30;
query1.next;
end;
Query1.Close;
Query1.open;
Query1.filtered := true;
Query1.Filter := ´CodControle = ´ + Floattostr(Table2CodSistema.value);
if MessageDlg(´Deseja imprimir promissórias ?´,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
Query1.Close;
// Zreport1.Print;
// ZReport1.Preview;
Query1.open;
Query1.filtered := true;
Query1.Filter := ´CodControle = ´ + Floattostr(Table2CodSistema.value);
end;
end;
agora no segundo desenho é onde faço a mantenção de valores ( akeles processados pelo código acima ), umas da funções e calcular o quanto se deve de uma nota ( uma nota pode ter várias parcelas e o programa calcula isso ) o problema acontece nesta hora..
veja o código...
Neste código filtra a tabela relacionada para exibir somentes dados referente a nota.
procedure T_FormCRReceb.ListaTab2;
begin
Table2.filtered := true;
Table2.Filter := ´CodControle = ´ + Floattostr(Table1CodSistema.value);
end;
Aki ele calcula os valores fitrados na função acima e exibe em um caption
acho que o problema esteja num função desta de calculo...
procedure T_FormCRReceb.ListaTab2Calc;
var
i,r: integer;
n: real;
begin
n:= 0;
Table2.open;
r:= Table2.RecordCount;
Table2.First;
for i:=1 to r do
begin
n:= n + Table2Valor.asfloat;
Table2.Next;
end;
Label8.caption:= formatfloat(´R$ ,#,,0.00´,n);
end;
vejam e deem sua opnião...
Gostei + 0
17/03/2005
Andremuller
se for em
V_VALOR:=((strtofloat(edvalor.text)-strtofloat(edentrada.text)))/strtoint((edparcela.text)); query1.fieldbyname(´valor´).value:=formatfloat(´ ,#,,00´,v_Valor);
tente fazer
query1.fieldbyname(´valor´).AsFloat := (strtofloat(edvalor.text)-strtofloat(edentrada.text))/strtoint(edparcela.text);
Dica: sempre que tu enviar código para o fórum, seleciona ele e clica em ´Code´
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)