Ajustando Valor de quot;Célulaquot; em DBGrid
Nunca gostei muito de utilizar DBGrid, mas me vi nessa situação hoje:
Estou utilizando o código abaixo para melhorar a visualização dos dados:
Até aí tudo bem, está funcionando normalmente, mas quando quero ´colorir´ alguma célula específica não funciona:
Eis o código que estou usando:
Algum dos amigos sabe se há algum erro aí em cima ?
Abraços e Bons Códigos :wink:
Estou utilizando o código abaixo para melhorar a visualização dos dados:
DBGridDrawColumnCell; begin If Odd((Sender AS TDBGrid).DataSource.DataSet.RecNo) Then begin (Sender AS TDBGrid).Canvas.Font.Color := $00484824; (Sender AS TDBGrid).Canvas.Brush.Color := clWhite; end Else begin (Sender AS TDBGrid).Canvas.Font.Color := clBlack; (Sender AS TDBGrid).Canvas.Brush.Color := $00B3FFFF; end; (Sender AS TDBGrid).Canvas.FillRect(Rect); (Sender AS TDBGrid).Canvas.TextOut(Rect.Left+2, Rect.Top, Column.Field.AsString); end;
Até aí tudo bem, está funcionando normalmente, mas quando quero ´colorir´ alguma célula específica não funciona:
Eis o código que estou usando:
DBGridDrawDataCell; If (Field.FullName = ´Quantidade´) AND (Field.AsInteger < 4) Then begin DBGrid.Canvas.Font.Color := clYellow; DBGrid.Canvas.Brush.Color := $005353FF; end;
Algum dos amigos sabe se há algum erro aí em cima ?
Abraços e Bons Códigos :wink:
Paulocesar1301
Curtidas 0
Respostas
Paulocesar1301
17/10/2006
sorry... esqueci de copiar as duas ultimas linhas
(Sender AS TDBGrid).Canvas.FillRect(Rect);
(Sender AS TDBGrid).Canvas.TextOut(Rect.Left+2, Rect.Top, Field.AsString);
(Sender AS TDBGrid).Canvas.FillRect(Rect);
(Sender AS TDBGrid).Canvas.TextOut(Rect.Left+2, Rect.Top, Field.AsString);
GOSTEI 0
Paulocesar1301
17/10/2006
sorry people... minha cabeça parece não estar mais pensando hoje:
Eu só ainda não sei como coloco os dados centralizados na célula, mas isso é apenas porpurina... caso alguém saiba
ONDrawColumnCell; If (Column.Field.FullName = ´Quantidade´) Then begin If (Column.Field.AsInteger < 4) Then begin (Sender AS TDBGrid).Canvas.Font.Color := clYellow; (Sender AS TDBGrid).Canvas.Brush.Color := clRed; end Else If (Column.Field.AsInteger >= 4) Then begin (Sender AS TDBGrid).Canvas.Font.Color := clWhite; (Sender AS TDBGrid).Canvas.Brush.Color := $00007700; end; end; (Sender AS TDBGrid).Canvas.FillRect(Rect); (Sender AS TDBGrid).Canvas.TextOut(Rect.Left+2, Rect.Top, Column.Field.AsString);
Eu só ainda não sei como coloco os dados centralizados na célula, mas isso é apenas porpurina... caso alguém saiba
GOSTEI 0
Renato.pavan
17/10/2006
Colega, ultilize o mesmo evento q vc utilizou pra fazer o grid zebrado, tenho um exemplo funcionando da forma que vc precisa mas esta em casa, caso vc não consiga resolver posta ai que posto o exemplo que tenho amanhã.
[]´s
Renato.
[]´s
Renato.
GOSTEI 0
Renato.pavan
17/10/2006
Eu só ainda não sei como coloco os dados centralizados na célula, mas isso é apenas porpurina... caso alguém saiba
Centralizando...
var i: integer; s: string; begin s := Column.Field.Text i := DBGrid1.Canvas.TextWidth( s ); DBGrid1.Canvas.TextOut(Rect.Left + (Rect.Right - Rect.Left - i) div 2, Rect.Top + 2, s); end;
GOSTEI 0
Paulocesar1301
17/10/2006
Brow!!!
Show de bola !!!
Valeu msm !!!
No que precisar e eu puder ajudar... é só falar !!
Show de bola !!!
Valeu msm !!!
No que precisar e eu puder ajudar... é só falar !!
GOSTEI 0