Ver Mensaje Individual
  #1  
Antiguo 23-01-2006
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Reputación: 20
jonmendi Va por buen camino
Redondear + DBGrid1DrawColumnCell

Hola a todos!
tengo que comparar dos columnas de pesos.
Tengo una función redondear que
Código:
function redondear(x:double):double;
begin
  SetRoundMode(rmDown);
  result:= SimpleRoundTo(x,-2);
end;
y lo llamo con
Código:
Table1.Fields[2].AsFloat:= Redondear(Table1.Fields[2].AsFloat);
Cuando hago la comparación en

Código:
procedure TForm1.DBGrid2DrawColumnCell
   (Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn;
    State: TGridDrawState);
begin
    if table1.Fields[2].AsFloat <>  -table1.Fields[3].AsFloat then
      DBGrid2.Canvas.Brush.Color:=clRed;
    DBGrid2.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
todas las columnas me aparecen en rojo. En cambio si no lo redondeo, solo me aparecen en rojo las que no coinciden (como debería de ser, pero necesito redondear). Si hago una asignación (solo para probar como va)

Código:
Table1.Fields[2].AsFloat:= 1;
también me aparecen en rojo solo las que no coinciden. Si hago RoundTo, también hace bien la comparación (pero el redondeo es otro cantar).
¿Sabe alguien donde está el misterio?
Muchas gracias!
Jon


uso delphi7, bde,paradox
Responder Con Cita