Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
DBGrid (Color de barra de selección)

Hola a todos

En un DbGrid según a mi campo estado que tengo muestro algunos registros de un color u otro, lo que quiero es poder cambiar el color de la barra de selección que aparece en azul, osea que cuando este con un color u otro me muestre la barra de selección de un color un poco mas fuerte al color donde se encuentra en ese momento.

Saluditos y muchísimas gracias por adelantado.
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #2  
Antiguo 14-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Caro,

Puedes hacerlo cambiando DBGrid.Canvas.Brush.Color:

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if tu_condición and (gdSelected in State) then
    DBGrid1.Canvas.Brush.Color := clRed;

  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 14-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
En este momento estaba viendo en la ayuda sobre el gdSelected, muchísimas gracias Roman, me ha funcionado como quería.

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if gdSelected in State then
   begin
     if DBGrid1.Canvas.Brush.Color = $00A4FFFF then
      begin
       DBGrid1.Canvas.Brush.Color := clYellow;
       DBGrid1.Canvas.Font.Style := [fsBold];
      end
     else
      begin
       DBGrid1.Canvas.Brush.Color := $00E7C4B6;
       DBGrid1.Canvas.Font.Color := clBlack;
       DBGrid1.Canvas.Font.Style := [fsBold];
      end;
   end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 14-05-2008 a las 04:26:17.
Responder Con Cita
  #4  
Antiguo 14-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé si ya te percataste, pero esta forma de pintar la barra no funciona bien si el DBGrid tiene activada la opción dgMultiSelect. Luego de darle algunas vueltas al código de la VCL, veo que la opción más sencilla es usar el método HighlightCell del DBGrid, ya que éste toma en consideración las filas que estén seleccionadas. Lo malo es que este método está protegido, aunque puede usarse el viejo truco de la desprotección:

Código Delphi [-]
type
  TDBGrid = class(DBGrids.TDBGrid);

procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if TDBGrid(DBGrid1).HighlightCell(DataCol, TDBGrid(DBGrid1).Row, '', State) then
    DBGrid1.Canvas.Brush.Color := clRed;

  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

En fin, creo que esto sólo sería necesario si está activada la opción mencionada.

// Saludos
Responder Con Cita
  #5  
Antiguo 14-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
La verdad no me di cuenta que no funcionaba con la opción dgMultiSelect, ya que no la tengo activada, pero tomare en cuenta lo que dijiste cuando lo necesite de esa forma . Muchas gracias de nuevo amiguito Roman.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 17-05-2008
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Hola. Una consulta.
Como hiciste para que cambie el color del registro según el campo estado, Yo quisiera poner en rojo los que tienen una fecha de baja?
Estoy interesado en eso, porque lo busque y no pude saber como hacerlo.
Desde Ya Gracias.
Responder Con Cita
  #7  
Antiguo 18-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Cañones, tienes que hacerlo en el mismo evento OnDrawColumnCell, suponiendo que los que no tienen fecha de baja, tienen un valor Null.

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if Not (Query1.FieldByName('FECHA_BAJA').IsNull) then
    begin
     // Cambiamos el color
     DBGrid1.Canvas.Brush.Color := $00A4FFFF;
     DBGrid1.Canvas.Font.Color := clRed;
 
     DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
    end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 24-05-2008
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Gracias Caro.
Sabes que encontre el hilo de suerte igual que la primera vez que entre y tu respuesta no me llego al correo.
Bueno, ahora veo como hacerlo.
Muchas gracias, esto me sirve de mucho.
Saludos.
Cañones.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Color de selección reinier OOP 1 27-04-2008 14:36:18
Cambiando el Color de la Barra Selectora del DBGrid enecumene OOP 5 21-04-2008 23:24:02
Eliminar la barra de seleccion de un ListBox gulder Varios 2 25-02-2008 22:41:38
ListBox COLOR seleccion diferente Deiv Varios 1 09-01-2006 17:10:59
cual es el evento que se ejecuta al mover la barra de seleccion en un dbgrid soyhugo Varios 3 17-02-2004 17:42:52


La franja horaria es GMT +2. Ahora son las 12:47:15.


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
Copyright 1996-2007 Club Delphi