Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2006
josem josem is offline
Miembro
 
Registrado: mar 2004
Posts: 23
Poder: 0
josem Va por buen camino
Lightbulb Coleres en las Grilla

Hola Integrantes.

La cosa es la siguiente:Tengo una grilla en la cual presento los datos de una tabla. En esta grilla capturo el evento "OnDrawColumnCell" y presento fila por medio de otro color. Me explico:La primera fila color por defecto (Blanco), la segunda de un color celeste, la tercera de color blanco, la cuarta color celeste..., y asi sucesivamente. El punto es que muevo el cursor y este queda sobre la fila por defecto, esta fila se presenta de color azul con letras blancas ( Lo cual esta correcto ), pero cuando se posisiona sobre una de las celdas coloreadas. El cursor se presenta del color de fondo modificado (celeste en este caso) y con letras blancas. Con lo cual obiamente no se ve el contenido de la fila.

La pregunta es: Como puedo interceptar el cursor, para cambiar el color de fondo cuando el cursor este sobre las filas celestes?. Intente usar el evento "AfterScroll" de la tabla; pero tengo la grilla en un formulario y la tabla en otro formulario (un DataModule) por lo cual no pude hacerlo.

Alguna sugerencia..?

Gracias
Saludos
Jose Miguel B.
Responder Con Cita
  #2  
Antiguo 23-10-2006
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.282
Poder: 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
CReo que se puede hacer en el mismo procedimiento que estás utilizando teniendo en cuenta el parámetro de State.
__________________
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
  #3  
Antiguo 23-10-2006
josem josem is offline
Miembro
 
Registrado: mar 2004
Posts: 23
Poder: 0
josem Va por buen camino
Hola Neftali.
Podrias ser mas explicito.. Gracias.

Saludos
Jose Miguel B.
Responder Con Cita
  #4  
Antiguo 23-10-2006
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.282
Poder: 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
Si no me equivoco, está teniendo problemas con la barra que marca el registro seleccionado en ese momento.

¿Puedes poner el código? Con eso estaríamos seguros.
__________________
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
  #5  
Antiguo 24-10-2006
josem josem is offline
Miembro
 
Registrado: mar 2004
Posts: 23
Poder: 0
josem Va por buen camino
Thumbs up

Hola, me habia ausentado de la oficina y no habia tenido oportunidad de leer tu respuesta.

Agradesco tu interes. Aqui va el codigo. Y efectivamente tengo problemas con la barra que marca el registro seleccionado.

Gracias

Saludos
Jose Miguel B.



Código Delphi [-]
with Sender as TDBGrid do
begin
if ( Dt1.TDatReserva.RecNo div 2 ) = ( Dt1.TDatReserva.RecNo / 2 ) then
Canvas.Brush.Color := $00FBEEE3;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
Responder Con Cita
  #6  
Antiguo 24-10-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Espero te sirva este snippet de codigo que tenia por ahi, hace precisamente lo que quieres, aunque en este caso se sobreescribe el metodo GetCellParams para dibujar las filas con los colores que se requieran segun corresponda.

Código Delphi [-]
//Ojo: La Grilla es una TRxDBGrid de las Rx

procedure TFMasterList.GridCobranzaGetCellParams(Sender: TObject;
  Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);

begin
if Odd( SQLData.ZMaster.RecNo )  then // Si es fila par
    begin
      If Not Highlight Then          //Y NO ESTA SELECCIONADA OJO!
      Begin
         BackGround:=clCream;   //ponle fondo crema
         AFont.Color:=clBlack;   // y letras negras
      end
      else
      Begin
          BackGround:=clCream;   //Aqui pondrias los colores que quieres
         AFont.Color:=clBlack;   // para cuando la fila este seleccionada
                                        // o bien no poner nada y quitar el else
                                        // para usar los colores por default.
      end;
    end;
  {else  Aqui puedes poner los colores que aplicarian para las filas impares
    Begin
    end;
   }

end;

Como ves es sencillo y la ventaja es que solo necesitas cambiar lo indispensable pues el resto del dibujo de la fila lo hace con los colores por defecto. Puedes jugar con condiciones para pintar una fila segun los datos del registro actual. Recuerda que el evento se ejecuta por cada registro visible en la grilla.

Espero te sirva aunque yo ya no lo uso pues ahora uso las DevExpress que estan mas fáciles de personalizar.

Saludos
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 06-06-2007
Ecijano86 Ecijano86 is offline
Registrado
 
Registrado: may 2007
Posts: 3
Poder: 0
Ecijano86 Va por buen camino
Cita:
Empezado por AzidRain
Espero te sirva este snippet de codigo que tenia por ahi, hace precisamente lo que quieres, aunque en este caso se sobreescribe el metodo GetCellParams para dibujar las filas con los colores que se requieran segun corresponda.


Código Delphi [-]
//Ojo: La Grilla es una TRxDBGrid de las Rx
 
procedure TFMasterList.GridCobranzaGetCellParams(Sender: TObject;
  Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);
 
begin
if Odd( SQLData.ZMaster.RecNo )  then // Si es fila par
    begin
      If Not Highlight Then          //Y NO ESTA SELECCIONADA OJO!
      Begin
         BackGround:=clCream;   //ponle fondo crema
         AFont.Color:=clBlack;   // y letras negras
      end
      else
      Begin
          BackGround:=clCream;   //Aqui pondrias los colores que quieres
         AFont.Color:=clBlack;   // para cuando la fila este seleccionada
                                        // o bien no poner nada y quitar el else
                                        // para usar los colores por default.
      end;
    end;
  {else  Aqui puedes poner los colores que aplicarian para las filas impares
    Begin
    end;
   }
 
end;




Como ves es sencillo y la ventaja es que solo necesitas cambiar lo indispensable pues el resto del dibujo de la fila lo hace con los colores por defecto. Puedes jugar con condiciones para pintar una fila segun los datos del registro actual. Recuerda que el evento se ejecuta por cada registro visible en la grilla.

Espero te sirva aunque yo ya no lo uso pues ahora uso las DevExpress que estan mas fáciles de personalizar.

Saludos
Buenas Tardes AzidRain:

No sé si leerás esto o no... pero tío, MUCHAS GRACIAS POR ESTE CÓDIGO porque tras 7 horas buscando buscando.... topamos con este código y nos lo solucionó, que nos ha abierto las puertas del cielo JAJAJAJAJAJAAJAJA

Guardaré la pistola para otro día.... xD

Muchas gracias de nuevo

Última edición por Ecijano86 fecha: 06-06-2007 a las 20:07:51.
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
Grilla :-( AndyLupa Varios 0 20-04-2006 15:51:18
necesito una grilla que... Patricio Conexión con bases de datos 4 21-12-2005 14:10:17
clientdataset+grilla gustavoh Conexión con bases de datos 0 06-12-2005 00:23:13
Autocompletar en una grilla TheWolfMan Varios 4 07-10-2005 17:11:36
Grilla dinamica zugazua2001 OOP 1 04-10-2004 18:52:02


La franja horaria es GMT +2. Ahora son las 13:35:46.


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