Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   dbgrid con colores (https://www.clubdelphi.com/foros/showthread.php?t=11947)

Giniromero 30-06-2004 16:24:30

dbgrid con colores
 
Hola,

Sigo trabajando con delphi 6, e IB7. :)

Esta vez necesito saber si hay alguna manera de que en un dbgrid, conectado a mi tabla económica, se muestren los registros que tengan el campo importe como positivo en un color y los que esté el importe en negativo en otro color.

no es necesario se cambie el color de todo el registro, con que sea de la columna importe me vale, pero que se distinguan de un modo muy visual los registro positivos de los negativos.


Gracias a todos por la ayuda,

Virginia

delphi.com.ar 30-06-2004 16:35:54

Normalmente utilizo la TRxDBGrid, que es la grilla de las RxLibs. Esta grilla tiene un par de eventos que te permiten de una forma sencilla poder alterar los colores del fondo o las fuentes para cada celda:

http://www.clubdelphi.com/foros/showthread.php?t=574
http://www.clubdelphi.com/foros/showthread.php?t=3278

Toni 30-06-2004 16:36:36

Hola Giniromero,

Mirate en el libro la cara oculta de c++ builder, en la pagina 309. (En el de Delphi no se si es la misma pagina.)

El apartado: 'Numeros verdes y numeros rojos'

saludos,

Giniromero 02-07-2004 11:42:40

Muchas gracias a todos, he estado mirandome los hilos que me indicasteis, y lo he podido montar, por desgracia me relentiza mucho la aplicación, así que no lo voy a poder poner, pero muchas gracias.

Virginia

roman 02-07-2004 16:52:52

Cita:

Empezado por Giniromero
me relentiza mucho la aplicación, así que no lo voy a poder poner

¿Cómo es eso? Me sorprende por que he utilizado coloración de filas en dbgrids sin notar ningún empobrecimiento del desempeño. ¿Es muy complicada la lógica de la coloración, muchos casos distintos?
// Saludos

marcost 08-07-2004 00:20:53

Evento OnDrawColumnCell

Código:


procedure TfMain.dbGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
                if (Tabla.FieldByName ('importe').asCurrency > 0 then

                        TDBGrid (Sender).Canvas.Pen.Color := clRed
                else 
                        TDBGrid (Sender).Canvas.Pen.Color := clGreen;
end;

Eso deberia ser todo, por supuesto el grid debe tener la propiedad DefaultDrawing en False,

Eso de que la aplicacion se relentice al usar este evento me parece muy extraño

Suerte

^TxTeZ^ 08-07-2004 13:15:54

Estoy deacuerdo con Macrost, la mejor manera es con el Evento OnDrawColumCell..

marcost 08-07-2004 16:26:29

Mil disculpas, el código anterior que envié tenia una omisión y NO funcionaba, hay que añadir la linea en rojo, y ya funciona.

Código:


procedure TfMain.dbGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Tabla.FieldByName ('importe').asCurrency > 0 then
  TDBGrid (Sender).Canvas.Pen.Color := clRed
else 
  TDBGrid (Sender).Canvas.Pen.Color := clGreen;
TDBGrid (Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;



La franja horaria es GMT +2. Ahora son las 18:19:09.

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