Pintar linha inteira do DBGrid?
Pessoal!
Alguém sabe me dizer como faço para pintar a linha inteira de um campo selecionado no DBGrid?
Ao clicar em uma célula no DBGrid, preciso que toda a linha fique em outra cor...
Obrigado!
Alguém sabe me dizer como faço para pintar a linha inteira de um campo selecionado no DBGrid?
Ao clicar em uma célula no DBGrid, preciso que toda a linha fique em outra cor...
Obrigado!
Tomew
Curtidas 0
Respostas
Steve_narancic
18/04/2006
Também preciso implementar este recurso, alguém teria alguma idéia?
GOSTEI 0
Madxande
18/04/2006
Eu fiz uma rotina que muda a cor do dbGrid conforme umas condições, vou colocar o código e explicar.
Rotina para mudar a cor do dbGrid em tempo de execução:
Nome do dbGrid: [b:a9965dec24]DBG_Dev[/b:a9965dec24]
[b:a9965dec24]//Primeiro, vc vai abrir o evento do dbGrid DrawColumnCell[/b:a9965dec24]
procedure TF_Devolucoes.DBG_DevDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if SDS_Dev.Active then
begin
if SDS_Dev.RecordCount > 0 then
begin
if (SDS_DevPAGO.AsString = ´S´) and (SDS_DevDT_ENTRADA.AsDateTime <= SDS_DevDT_RETORNO.AsDateTime) then
begin
[b:a9965dec24]// esse próximo if iestá verificando se a coluna do dbGrid está selecionada.[/b:a9965dec24]
if (gdSelected in State) then
begin
[b:a9965dec24]// Aqui eu defini a cor da coluna do dbGrid para Verde com a fonte branca.[/b:a9965dec24]
DBG_Dev.Canvas.Brush.Color := clGreen;
DBG_Dev.Canvas.Font.Color := clWhite;
end
else
begin
[b:a9965dec24]// Aqui eu defini a cor da coluna do dbGrid para Verde Claro com a fonte preta.[/b:a9965dec24]
DBG_Dev.Canvas.Brush.Color := clLime;
DBG_Dev.Canvas.Font.Color := clBlack;
end;
end;
end;
end;
[b:a9965dec24]Aqui estou aplicando as mudanças de cores definitivamente no dbGrid.[/b:a9965dec24]
DBG_Dev.DefaultDrawDataCell(Rect, DBG_Dev.columns[datacol].field, State);
end;
---
Espero ter ajudado.
Até mais.
Rotina para mudar a cor do dbGrid em tempo de execução:
Nome do dbGrid: [b:a9965dec24]DBG_Dev[/b:a9965dec24]
[b:a9965dec24]//Primeiro, vc vai abrir o evento do dbGrid DrawColumnCell[/b:a9965dec24]
procedure TF_Devolucoes.DBG_DevDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if SDS_Dev.Active then
begin
if SDS_Dev.RecordCount > 0 then
begin
if (SDS_DevPAGO.AsString = ´S´) and (SDS_DevDT_ENTRADA.AsDateTime <= SDS_DevDT_RETORNO.AsDateTime) then
begin
[b:a9965dec24]// esse próximo if iestá verificando se a coluna do dbGrid está selecionada.[/b:a9965dec24]
if (gdSelected in State) then
begin
[b:a9965dec24]// Aqui eu defini a cor da coluna do dbGrid para Verde com a fonte branca.[/b:a9965dec24]
DBG_Dev.Canvas.Brush.Color := clGreen;
DBG_Dev.Canvas.Font.Color := clWhite;
end
else
begin
[b:a9965dec24]// Aqui eu defini a cor da coluna do dbGrid para Verde Claro com a fonte preta.[/b:a9965dec24]
DBG_Dev.Canvas.Brush.Color := clLime;
DBG_Dev.Canvas.Font.Color := clBlack;
end;
end;
end;
end;
[b:a9965dec24]Aqui estou aplicando as mudanças de cores definitivamente no dbGrid.[/b:a9965dec24]
DBG_Dev.DefaultDrawDataCell(Rect, DBG_Dev.columns[datacol].field, State);
end;
---
Espero ter ajudado.
Até mais.
GOSTEI 0
Bruno Belchior
18/04/2006
Basta ativar o flag, [b:fa905ae2f3]dbRowSelect[/b:fa905ae2f3] da propriedade options do DBGrid e a linha inteira ficará em destaque...
GOSTEI 0