<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    <pre>Disculpa la molestia mi nombre es Francisco, tengo un problema algo similar al tuyo, bueno tu ya lo resolviste, tengo la siguiente rutina:

procedure TModuloDatosFrm.frReport1UserFunction(const AName: String; p1, p2,
  p3: Variant; var Val: Variant);
var
  sdato: double;
  Entero: Double;
  Fraccion: Double;
begin
  If AName = 'FORMATO' Then
  Begin
    sdato:=frParser.Calc(P1);
    if sdato = 10 then
    Begin
       sdato := Int(sdato);
       Val:=Format('%n', [sdato]);
    End
    else
    Begin
      Entero := Int(sdato);
      Val:=format('%n', [Entero]);
      Fraccion := Frac(sdato);
      If Fraccion <> 0 Then
        Val := Val + Format('%d', [Fraccion])
      Else
        Val := Val + Format('%.1d', [Fraccion]);
    end;
  end;
end;                


El punto es que si el valor es = "10", me debe de mostrar el "10" solo sin decimales, esa parte ya esta puesto que así 
lo muestra el sistema, ahora si el valor es menor pero no tiene decimales por ejemplo "9", me debe de mostrar "9.0", el 
codigo lo realice como esta en el ejemplo, pero me da un error de 

Paola perfecto. Quedó como sigue:

EConvertErrorConvertError con el mensaje invalid argument index format, me podrías ayudar gracias

procedure Tdm.rptUserFunction(const AName: String; p1, p2, p3: Variant;
  var Val: Variant);
var
  sdato: double;
begin
  sdato:=frParser.Calc(P1);
  if lowercase(AName) = 'noceros' then begin
    if sdato = 0 then
   Val:='-'
    else
      Val:=format('%n', [sdato]);
  end;
end; 

***
Una pregunta: que hace la función  frParser.Calc
             

Saludos Cordiales
=========
||<i> ISMAEL ||
</i>=========
  ----- Original Message ----- 
  From: Paola Bruccoleri 
  To: Spanish version of Lazarus List 
  Sent: Tuesday, April 26, 2011 10:07 AM
  Subject: Re: [Lazarus-es] Formatos númericos en Lazreport


  El 26/04/2011 09:52 a.m., Ismael L. Donis García escribió: 
    Como podría formatear un campo numérico para cuando tenga valor 0 me salga -, ósea un signo de menos.

    Ejemplo:

    Num       Fecha        Valor CUC     Valor CUP
    ===       =======    =========    ========
    1           1/4/2011                   -              120.59 
    2           1/4/2011             10.85                    -  



  Hola Ismael..
  te puedes definir una función propia, por ejemplo llamada FORMATO

  en el reporte, pones donde va el valor, en vez de [qry."CAMPO"]
  esto:
  [FORMATO([qry."CAMPO"])]

  ¿dónde la defines? en el evento OnUserFunction del componente frreport.
  Acá te pego un ejemplo que uso (obtengo segundos de la consulta,  que quiero mostrarlos con el formato d hh:mm:ss


  procedure THorasOperario.rptInformeUserFunction(const AName: String; p1, p2,
    p3: Variant; var Val: Variant);
  var
    Secs: integer;
  begin
    if AName='SEG2TIME' then begin
      Secs := frParser.Calc(P1);

      Val :=  format('%dd ',[Secs div SecsPerDay]);
      Secs := Secs mod SecsPerDay;
      Val := Val + format('%.2d:', [Secs div 3600]);
      Secs := Secs mod 3600;
      Val := Val + format('%.2d:',[Secs div 60]);
      Secs := Secs mod 60;
      Val := Val + format('%.2d',[Secs]);
    end;
  end;        </pre>
  </body>
</html>