Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Unhappy problemas con un stringgrid

hola delphimaniacos!!

Bueno pues resulta q tengo un pequeño problemilla y es el siguiente tengo un stringgrid y quiero q los datos de una operacion q realizo tengan un cierto formato (10 digitos en la parte entera y 2 en la decimal) y lo he echo asi:
stringgrid1.Cells[5,i]:=floattostrf(MAT.fieldbyname('unidadesar').ASFLOAT*
(1/TABLE1.FIELDBYNAME 'U_CONVERT').ASFLOAT),ffFixed,10,2);

pero no me da el resultado q yo esperaba xq me redondea y no me da los dos decimales entoces mi pregunta es ¿hay algo mal en el codigo? o ¿de q otra manera se puede hacer esto?

Gracias y un saludo.
__________________
.:|Merlin|:.
Responder Con Cita
  #2  
Antiguo 17-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Prueba con FormatFloat('#.##0.00', Numero)
Responder Con Cita
  #3  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Unhappy

he probado con lo q me ha dicho cadetill y no ha funcionado alguna otra idea??
__________________
.:|Merlin|:.
Responder Con Cita
  #4  
Antiguo 17-03-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Hola Merlin!

Prueba con esto:

Código:
  var
      Resultado : Double;
  ///

  Resultado:= MAT.fieldbyname('unidadesar').ASFLOAT*
                   (1/TABLE1.FIELDBYNAME 'U_CONVERT').ASFLOAT;

  stringgrid1.Cells[5,i]:= FloatToStr(Resultado);

 ///
No lo he podido probar pero igual así funciona.

Saludos!
Responder Con Cita
  #5  
Antiguo 17-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Hola Nuria!

Muxas gracias por responderme, pero te tengo q decir q esa opcion ya la habia probado yo y aunq la he vuelto a probar por asegurarme no ha funcionado. Se os ocurre otra manera??
__________________
.:|Merlin|:.
Responder Con Cita
  #6  
Antiguo 17-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por merlin
he probado con lo q me ha dicho cadetill y no ha funcionado alguna otra idea??
Pero... qué significa que no ha funcionado?
Responder Con Cita
  #7  
Antiguo 17-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por cadetill
Pero... qué significa que no ha funcionado?
De la rae:

Cita:
1. intr. Dicho de una persona, de una máquina, etc.: Ejecutar las funciones que le son propias.
2. intr. Ir, marchar o resultar bien. El negocio funciona como esperaba.
O sea, que lo que le dijiste no ejecuta las funciones que le son propias y por tanto su negocio no funcionará como esperaba.

Responder Con Cita
  #8  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Bueno la cosa sigue = he probado lo q cadetill me puso y no me da ningun error, pero no hace lo q deberia hacer, (eso es q no ha funcionado), se os ocurre el xq? o como hacerlo de otra manera lo mas curioso esq si el valor de la celda del stringgrid lo introduzco en un showmessage para ver q es lo q contiene antes de insertarlo si q es el correcto pero cuando se termina la ejecucion no se muestra ese valor en la celda sino q se ha redondeado.

Sabeis xq me puede estar pasando esto??
__________________
.:|Merlin|:.
Responder Con Cita
  #9  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Acabo de probarlo y me ha funcionado sin problemas

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := FormatFloat('#,##0.00', 12.2352);
  stringgrid1.Cells[4,2]:= s;
  stringgrid1.Cells[4,3]:= FormatFloat('#,##0.00', Trunc(12.2352 * 100) / 100);
end;
Eso sí, hay que tener en cuenta que FormatFloat redondea, por lo que si queremos los dos últimos decimales tal cual, hay que hacer la operación de Trunc(valor * 100) / 100

Espero te sirva
Responder Con Cita
  #10  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Cadetill muxas gracias por tu paciencia y por tu ayuda pero creo q todavia no lo he solucionado.

He exo lo siguiente:

Resultado:=com.fieldbyname('cantidad_r').asfloat*(1/TABLE1.FIELDBYNAME('U_CONVERT').ASFLOAT);

stringgrid1.Cells[3,i]:= FormatFloat('#,##0.00', Trunc(RESULTADO * 100) / 100);

Pero no ha servido de nada sigue apareciendo la cantidad redondeada.



Tb he probado con esto y me pasa lo mismo q la cantidad aparece redondeada
stringgrid1.Cells[3,i]:= floattostrf(resultado,fffixed,10,2);

hay algo mas por proba o hacer?
__________________
.:|Merlin|:.
Responder Con Cita
  #11  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Vamos a ver que entiendes por redondeado y contestame a estas preguntillas

Qué valor tiene Resultado despues de la operación?
Qué valor te devuelve FormatFloat?

Es que eso te ha de funcionar!!!
Responder Con Cita
  #12  
Antiguo 18-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
redondeo
1,52 se redondea a 2
1,25 se redondea a 1
eso es lo q entiendo yo por redondear.


Resultado despues de la operación es 26,15 pero cuando se muestra en el stringgrid es 26

FormatFloat devuelve 26,15

Un saludo, merlin
__________________
.:|Merlin|:.
Responder Con Cita
  #13  
Antiguo 18-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Mira en configuración regional lso separadores de miles y decimales que tengas configurados. Si el problema es ese, puedes solucionarlo así

Código:
var
  OldDS, OldTS: Char;
begin
  OldDS := DecimalSeparator;
  OldTS := ThousandSeparator;
  DecimalSeparator := '.';
  ThousandSeparator := ',';

  // operaciones

  DecimalSeparator := OldDS;
  ThousandSeparator := OldTS;
end;
Responder Con Cita
  #14  
Antiguo 22-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
hola cadetill

La configuración regional es la correcta, es mas en el mismo stringgrid tengo algunas columnas q tienen los decimales puestos, pero hay otras q no me los pone.

Alguna otra posibilidad de hacer q aparezcan los decimales??
__________________
.:|Merlin|:.
Responder Con Cita
  #15  
Antiguo 22-03-2004
Avatar de merlin
merlin merlin is offline
Miembro
 
Registrado: nov 2003
Posts: 64
Poder: 21
merlin Va por buen camino
Oeoeoeoeee

Por fin coño ya era hora muxas gracias a todos los q habeis respondido a mi duda, y la solución era, lo mas facil un simple "format"

stringgrid1.Cells[3,i]:= format('%10.2f',[resultado]);

Gracias a todos.
__________________
.:|Merlin|:.
Responder Con Cita
  #16  
Antiguo 10-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
merlin

Tu mensaje de hoy 10 de enero de 2004 no tiene nada que ver con este hilo de manera que lo moví a un nuevo hilo.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:35:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi