GARANTIR DESCONTO

Fórum Problemas com formatação... #272716

16/03/2005

0

e aí comunidade..presciso de um help...

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

Gigatel

Responder

Posts

17/03/2005

Andremuller

Tem um componente pronto que faz isso: TCurrencyEdit da Rx.
Troque a propriedade DisplayFormat para 0.00;- 0.00 e o resultado será o formato que estás procurando.


Responder

Gostei + 0

17/03/2005

Gigatel

Más onde fica isso ? é um componete ?

Tem um componente pronto que faz isso: TCurrencyEdit da Rx. Troque a propriedade DisplayFormat para 0.00;- 0.00 e o resultado será o formato que estás procurando.



Responder

Gostei + 0

17/03/2005

Andremuller

Sim, mas o componentes Rx foram incorporados ao Project-Jedi (http://homepages.borland.com/jedi/jvcl/)
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?


Responder

Gostei + 0

17/03/2005

Marcio.theis

Você tb pode baixar este [url=http://users.cjb.net/mmaatt/tredit.zip]Edit[/url] , no qual ele faz a operação de formatar campo para mostrar, podendo vc escolher


Responder

Gostei + 0

17/03/2005

Gigatel

e tem outra coisa eu estou querendo é eliminar o ponto ( no caso do valor ser igual ou maior que mil ) este ponto está sacaneando alguns meses de trabalho... tem que ser em programação, pois a função vai ficar num código onde é gerado parcelas o edit acima foi só um exemplo.

Más onde fica isso ? é um componete ? [quote:193e270bb3=´andremuller´]Tem um componente pronto que faz isso: TCurrencyEdit da Rx. Troque a propriedade DisplayFormat para 0.00;- 0.00 e o resultado será o formato que estás procurando.
[/quote:193e270bb3]


Responder

Gostei + 0

17/03/2005

Andremuller

Aquela função que postei ou o DisplayFormat que informei eliminam o ponto.
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.


Responder

Gostei + 0

17/03/2005

Gigatel

É porque tenho um programinha que gera notas promissórias, só descobri que dava pau depois de um tempão de uso, vejam :

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...


Responder

Gostei + 0

17/03/2005

Gigatel

isso num fica num edit naum, é na hora de gerar as parcelas...

É porque tenho um programinha que gera notas promissórias, só descobri que dava pau depois de um tempão de uso, vejam : 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...



Responder

Gostei + 0

17/03/2005

Andremuller

Cara mas como tu chega nessa formatação 1.000,00 ???
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?


Responder

Gostei + 0

17/03/2005

Marcio.theis

Acredito que vc esta inserindo este valor via insert no banco, por isto gerando o erro, sendo que vc pode resolver isto utilizando uma função simples, já passei por isto e criei uma função asim:

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.


Responder

Gostei + 0

17/03/2005

Silviogs

Olá Gigatel

o componentes RX que se fala, está dispoível aqui na clubedelphi para Download na seçao componentes-diversos.

Atenciosamente


Silvio Guedes


Responder

Gostei + 0

17/03/2005

Gigatel

Postei 2 screns do meu programa em execução e seus respctivos erros talves fica mais fácil o entendimento...

http://geocities.yahoo.com.br/gigatelsoft/01.JPG
http://geocities.yahoo.com.br/gigatelsoft/02.JPG


Responder

Gostei + 0

17/03/2005

Andremuller

Esse grid é DBAware?
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.


Responder

Gostei + 0

17/03/2005

Gigatel

Esse grid é DBAware? 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.



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...


Responder

Gostei + 0

17/03/2005

Andremuller

Cara tu debugou esse código pra saber exatamente em qual linha que está dando esse pau?

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´


Responder

Gostei + 0

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

Aceitar