Ver Mensaje Individual
  #2  
Antiguo 06-08-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por candido
Quisiera cambiar el color de una celda de un DBGrid, dependiendo de si el valor de esta es positivo o negativo.
Pues la respuesta es sencilla, seguro que si buscas en los foros ya se ha contestado antes (en la pantalla de búsqueda escribes "DBGrid Color" sin las comillas) y podrás obtener otras soluciones, de todas formas hace unos días contesté una pregunta muy similar y tengo el código a mano. Ahí va:

Es un ejemplo que pinta todas las celdas de la columna 1 cuyo importe sea impar (...sí, ya se que es una parida, pero es para poner un ejemplo...)

Código Delphi [-]
//-----------------------------------------------------------------procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  // La columna es la 1 y no está seleccionada?
  i f (Column.Index = 1) and (State = []) then begin
   // El valor de la celda es impar? 
    if (odd(DBGrid1.Columns[Datacol].Field.AsInteger)) then begin
      // Cambia el color de fondo de la celda a ROJO.
      DBGrid1.Canvas.Brush.Color := clRed;
      // Manda pintar la celda
      DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
    end;
  end;
end;
//-----------------------------------------------------------------

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita