Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problemas con un stringgrid (https://www.clubdelphi.com/foros/showthread.php?t=8302)

merlin 17-03-2004 11:41:27

problemas con un stringgrid
 
:D hola delphimaniacos!! :cool:

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 :confused: ¿hay algo mal en el codigo? o ¿de q otra manera se puede hacer esto?

Gracias y un saludo.

__cadetill 17-03-2004 12:42:24

Prueba con FormatFloat('#.##0.00', Numero)

merlin 17-03-2004 13:07:43

he probado con lo q me ha dicho cadetill y no ha funcionado alguna otra idea?? :(

Nuria 17-03-2004 13:22:12

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!

merlin 17-03-2004 13:45:47

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?? :(

__cadetill 17-03-2004 19:30:43

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? :confused:

roman 17-03-2004 19:37:24

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.

:D

merlin 18-03-2004 09:55:14

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

__cadetill 18-03-2004 12:59:41

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

merlin 18-03-2004 14:03:50

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?

__cadetill 18-03-2004 15:19:51

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!!! :confused:

merlin 18-03-2004 15:40:46

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 :(

__cadetill 18-03-2004 18:15:14

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;


merlin 22-03-2004 12:32:35

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 22-03-2004 13:37:31

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.

roman 10-01-2005 15:56:50

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


La franja horaria es GMT +2. Ahora son las 22:24:27.

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