Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Al hacer scroll no se dibuja un rectángulo en una celda de un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=72362)

isnagil 14-02-2011 18:38:50

Al hacer scroll no se dibuja un rectángulo en una celda de un dbgrid
 
Hola a todos:
Mi duda es la siguiente:
Pinto un rectángulo de color en una celda de una dbgrid de acuerdo con el valor de un campo:
Código Delphi [-]
procedure TfrmVisitas.DibujarColorEnTabla(Sender: TObject; ColorCuadro: integer; Rect: TRect); 
const   
  color: array[1..20] of tcolor = (clred, clBlue, clGreen, clAqua, clCream,  clDkGray, clFuchsia, clLime, clLtGray, clMaroon, clMoneyGreen, clNavy, clGray, clOlive, clPurple, clSilver, clSkyBlue, clTeal, clWhite, clBlack); 
var   
  posicionCuadro: TRect; 
begin   
  (Sender as TRzDBGrid).Canvas.FillRect(Rect);    
  (Sender as TRzDBGrid).Canvas.Brush.Color := color[ColorCuadro];   
  (Sender as TRzDBGrid).Canvas.Pen.Color := clBlack;    
  posicionCuadro.Left := Rect.Left + ((Rect.Right - Rect.Left - COLOR_WIDTH) div 2);   
  posicionCuadro.Right := posicionCuadro.Left + COLOR_WIDTH;   
  posicionCuadro.Top := Rect.Top + ((Rect.Bottom - Rect.Top - COLOR_HEIGHT) div 2);   
  posicionCuadro.Bottom := posicionCuadro.Top + COLOR_HEIGHT;    
  (Sender as TRzDBGrid).Canvas.Rectangle(posicionCuadro);    
  if (ColorCuadro = 0) then   
  begin     
     (Sender as TRzDBGrid).Canvas.Brush.Color := clWhite;     
     (Sender as TRzDBGrid).Canvas.Pen.Color := clBlack;      
     (Sender as TRzDBGrid).Canvas.FillRect(posicionCuadro);      
     (Sender as TRzDBGrid).Canvas.Rectangle(posicionCuadro);     
     (Sender as TRzDBGrid).Canvas.MoveTo(posicionCuadro.Left, posicionCuadro.Top);     
     (Sender as TRzDBGrid).Canvas.LineTo(posicionCuadro.Right, posicionCuadro.Bottom);     
     (Sender as TRzDBGrid).Canvas.MoveTo(posicionCuadro.Right - 1, posicionCuadro.Top);     
     (Sender as TRzDBGrid).Canvas.LineTo(posicionCuadro.Left - 1, posicionCuadro.Bottom);   
  end; 
end;

Lo llamo desde el OnDrawColumnCell del dbGrid

Código Delphi [-]
  if (Column.Title.Caption = 'Lesión') then 
  begin    
     DibujarColorEnTabla(Sender, Column.Field.AsInteger, Rect); 
  end;

Hasta aquí todo bien el problema es que al hacer un scroll de la tabla no se dibujan los cuadrados de color, aparece un integer (el valor del campo)
¿Por qué?


La franja horaria es GMT +2. Ahora son las 17:27:06.

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