Fórum Aparecer sinais + e - em numeros #420359

23/07/2012

0

Ola galera......to aprendendo a trabalhar com delphi. Tenho tanto 7 quanto o 2010. E me apareceu um probleminha num programinha que estou fazendo.

tenho uns 8 campos numéricos onde preciso colocar uma máscara de forma que se o número for positivo apresente o sinal + e se for negativo o sinal -. Ex: +1,25; +3,75.

Alguem pode me ajudar?
Carlos Magno

Carlos Magno

Responder

Posts

23/07/2012

William

Colega vai uma função simples, que recebe um valor double verifica se é maior que 0 ou menor que 0, então retorna uma string formatada com sinal:

function FormataValor(valor: Double): string;
begin
    if valor > 0 then
       Result := FormatFloat(+0.00, valor)
    else
       Result := FormatFloat(0.00, valor);
end;


OBS.: Note que quando for negativo não precisa adicionar o sinal -.
Responder

Gostei + 0

24/07/2012

Carlos Magno

Entendi seu código e o coloquei. Só que ao rodar ele da um erro pedindo um BEGIN BEGIN expected but END found.. Acho que esqueci de dizer que isso é um QRDBText.
Responder

Gostei + 0

24/07/2012

William

Note que estou usando uma instrução linear:

function FormataValor(valor: Double): string;
begin
 if valor > 0 then
    Result := FormatFloat(+0.00, valor) //Não vai Ponto e vírgula 
 else
    Result := FormatFloat(0.00, valor);
end;
Responder

Gostei + 0

24/07/2012

Carlos Magno

não foi colocado o ponto e virgula e continua dando o mesmo erro. Tentei do seu modo e também o não linear e dá o mesmo erro.
Responder

Gostei + 0

24/07/2012

Carlos Magno

Veja so como está.
procedure Tfrm_servprint.QRDBText36Print(sender: TObject;
  var Value: String);
function FormataValor(valor: Double): string;
begin
if valor > 0 then
Result := FormatFloat(+0.00, valor)
else
Result := FormatFloat(0.00, valor);
end;

Responder

Gostei + 0

24/07/2012

William

Não colega !!! Essa função é externa fica fora da procedure, quando for usá-la vc chama function, exemplo:

function Tfrm_servprint.FormataValor(valor: Double): string;
 begin
 if valor > 0 then
 Result := FormatFloat(+0.00, valor) //Não vai Ponto e vírgula 
else
 Result := FormatFloat(0.00, valor);
 end;

//Dentro da procedure que for necessária
QRBText36.text := FormataValor(<ak vai o valor para ser formatado>);


Nesse caso como os valores são de um dataset precisão ser formatados durante a criação do relatório.
Responder

Gostei + 0

24/07/2012

Carlos Magno

Caro colega.... desculpe minha burrice, mas como falei, sou iniciante e ainda tenho muito a aprender. Estou a quase dois meses aprendendo na raça sozinho, lendo, pesquisando, tentando e errando. Por isso que, você deu a direção e eu, tentando e errando, não consegui chamar o valor nessa parte:

qrdbtext36.text := FormataValor(essa parte onde estou errando);
Responder

Gostei + 0

24/07/2012

William

Colega não esquenta ninguém nasce sabendo a programar, demora um certo tempo até pegar o jeito da coisa.

qrdbtext36.text := FormataValor(essa parte onde estou errando);


Você vai passar como parâmetro para Function FormataValor(), o valor que vc quer que seja formatado possivelmente deve ser um campo da sua tabela.

Poste qual o código inteiro ou campo que deseja formatar..

OBS.: Pretendo escrever um artigo sobre as principais diferenças como usar procedures e functions no delphi, vou postar ak no portal DevMedia.
Responder

Gostei + 0

24/07/2012

Carlos Magno

o campo se chama LODE
Responder

Gostei + 0

26/07/2012

Joel Rodrigues

Cara, acho que vai ser:

qrdbtext36.text := FormataValor(tabela.FieldByName(´LODE´).AsFloat);
Responder

Gostei + 0

26/07/2012

Carlos Magno

Vou testar, caso dê certo eu mudo o topico para resolvido
Responder

Gostei + 0

26/07/2012

Carlos Magno

Não deu certo. esta dando erro justamente no QRDBText36.TEXT.
Responder

Gostei + 0

26/07/2012

Joel Rodrigues

Carlos, por favor nunca deixe de especificar qual o erro que está ocorrendo.
Responder

Gostei + 0

26/07/2012

Carlos Magno

Ok, perdão....o erro é este Undeclared identifier. text. Eu acho que deva esse paramentro text porque após colocar o ponto e aparece uma lista de opções, a text não lista.
Responder

Gostei + 0

26/07/2012

Bruno Leandro

Olá Carlos tente utilizar a propriedade Caption neste componente
Responder

Gostei + 0

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

Aceitar