Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dbgrid ordenar columna por color (https://www.clubdelphi.com/foros/showthread.php?t=81747)

shoulder 13-12-2012 20:02:08

Dbgrid ordenar columna por color
 
Hola, tengo un Dbgrid con tres columnas, apellido , nombre, descripcion, segun una descripcion dada pinto la fila e la columna de un color, hay una manera como ordeno por columna ordenar por color?.

Gracias.

ecfisa 13-12-2012 20:17:18

Cita:

Empezado por shoulder (Mensaje 451802)
Hola, tengo un Dbgrid con tres columnas, apellido , nombre, descripcion, segun una descripcion dada pinto la fila e la columna de un color, hay una manera como ordeno por columna ordenar por color?.

Gracias.

Hola shoulder.

Me confunde un poco esta parte:
Cita:

...pinto la fila e la columna de un color...
¿ Es la fila, la columna o determinadas celdas ?

Si se trata de las filas, se logra ordenando por el campo descripción:
Código SQL [-]
SELECT APELLIDO, NOMBRE, DESCRIPCION
FROM TU_TABLA
ORDER BY DESCRIPCION

Saludos.

shoulder 13-12-2012 20:25:53

Dbgrid ordenar columna por color
 
Hola basicamente lo que hago mediante un select de comparación pinto la linea con un color amarillo quienes difieren el mes actual con el mes anterior de sector de trabajo, es decir dentro del dbgrid los que se ven que la columna nombre esta de color amarillo cambiaron de oficina. el tema es que de 6000 personas estaran en amarillo 10. Lo que buscaba si habia una forma como en el excel de ordenar por color.

Gracias.

ecfisa 13-12-2012 21:23:43

Hola.

Por el color no se puede. Pero tomando en cuenta que el color se corresponde con determinado criterio, como te dije anteriormente, podes ordenar la consulta por el criterio. Esto hará que los registros (líneas) del mismo criterio (color) se agrupen.

Para ver si puedo explicarme con un ejemplo voy a tomar la tabla country de dbdemos.mdb de Delphi y considerar como criterio que el campo CONTINENT sea igual a 'South America'.

Inicialmente la consulta es:
Código SQL [-]
SELECT * 
FROM COUNTRY
Y muestra:


Luego cambiando por:
Código SQL [-]
SELECT * 
FROM COUNTRY 
ORDER BY CONTINENT
Queda agrupado por color (en realidad por el criterio):

Si deseas invertir el órden usa el modificador DESC.

Este es el código de pintado del ejemplo:
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if ADOQuery1.FieldByName('CONTINENT').AsString = 'South America' then
    DBGrid1.Canvas.Brush.Color:= clYellow
  else
    DBGrid1.Canvas.Brush.Color:= clMoneyGreen;
  DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

Saludos.

shoulder 14-12-2012 19:44:56

Dbgrid ordenar columna por color
 
Gracias!!!.


La franja horaria es GMT +2. Ahora son las 09:54:16.

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