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 08-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Problema al Pintar DBGrid

Yo hago lo siguiente, y me funciona perfecto, pero es como si temblara la grilla del DBGrid, como si todo el tiempo estuviera pintándose, y queda feo, como lo puedo solucionar???

Código Delphi [-]
procedure TBuscar.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
   clPaleMacho = TColor($00F1E8DE);
   clPaleHembra = TColor($00E1C4FF);
begin
     If Column.Field.Dataset.FieldbyName('sexo').AsString = 'MACHO'
         then dbgrid1.Columns[3].color := clPaleMacho
         else dbgrid1.Columns[3].color := clPaleHembra;
     DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State)
end;
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 09-06-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Prueba con DBGrid1.DoubleBuffered:=True; (Con asignarlo en el OnCreate ya te vale).

Saludos.
Responder Con Cita
  #3  
Antiguo 09-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por xEsk
Prueba con DBGrid1.DoubleBuffered:=True; (Con asignarlo en el OnCreate ya te vale).

Saludos.
Lo hice, pero no hay ningun cambio. Si yo en el procedimiento consulto por el estado o el foco de la selección, deja de parpadear, pero no me respeta la condicion, es decir, me pinta todos iguales.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 10-06-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Me temo que estés buscando el fallo en el sitio que no es.

Creo casi con toda seguridad que debes de tener un procedimiento en algún lado de tu aplicación que provoque o bien un cambio constante del puntero en la base de datos asociada que provoque el repintado continuo del DBGrid, o alguna otra rutina que te influya en dicho repintado.

Por eso se producirá el parpadeo. Porque por la rutina OnDrawColumnCell que has puesto no debería hacértelo.

Permíteme preguntarte si el código expuesto es la rutina OnDrawColumnCell completa. Puede ser también que dentro del propio OnDrawColumnCell tengas alguna parte de código que te provoque la llamada recursiva al propio método.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 11-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por gluglu
Permíteme preguntarte si el código expuesto es la rutina OnDrawColumnCell completa. Puede ser también que dentro del propio OnDrawColumnCell tengas alguna parte de código que te provoque la llamada recursiva al propio método.
Esta completa, tal cual la uso. Y lo raro es que en ningun otro evento de la aplicacion hay algo que llame al pintado del dbgrid, puesto a que el Query que realiza la consulta, solo se abre en el OnShow del formulario, y se cierra al salir. No se por donde buscar el error.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #6  
Antiguo 11-06-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
... mmmm, discreparía contigo de poner la consulta en el OnShow, ya que dicha consulta se ejecutará cada vez que, por ejemplo, pases de una aplicación a otra del propio windows, y tu form se 'oculte'. Al volver se ejecuta de nuevo el evento OnShow y se volverá a ejecutar la consulta sin ser necesario.

Pero esa sería otra discusión diferente. Aun así, no sé si eso puede o no tener influencia en tu 'parpadeo'. Sólo por probar, deberías sacar esa consulta del evento OnShow y colocarla por ejemplo en el OnCreate, que sólo se ejecutará una vez, al crear el Form.

Hay varios temas en el foro sobre orden de llamada a los diferentes eventos OnShow, OnCreate, OnActivate y parecidos.

Respecto a tu afirmación de que no haya nada en tu aplicación que llame al repintado del Grid, ese es precisamente el problema. Que no es que lo llames tu. Sino que el OnDrawColumnCell se ejecuta muchísimas veces sin tu ser consciente de ello. Lo llama el propio delphi cada vez que tenga que repintarse algo del Grid. Por ejemplo, al mover una ventana cualquiera de tu propia aplicación por encima del DBGrid, es necesario repintarlo, y por tanto se llama al evento OnDrawColumnCell.

Por eso, seguramente sin darte cuenta, se estará llamando por algún lado a dicho evento, y es lo que te provoca el parpadeo del mismo.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 11-06-2007 a las 09:58:24.
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
Pintar un dbGRid sebas78 Gráficos 5 22-07-2006 16:06:36
Pintar Fila del DBGrid Palmiro Conexión con bases de datos 2 05-04-2006 23:25:51
pintar columna DBGRid Coco_jac Varios 1 02-02-2006 23:54:59
Pintar filas DbGrid lunatiko Varios 5 05-07-2005 15:11:51
Pintar Renglones en DBGRID Enan0 SQL 2 15-02-2005 20:39:05


La franja horaria es GMT +2. Ahora son las 01:05:25.


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