Fórum Evento OnDrawDataCell do Grid #241054
02/07/2004
0
Olá,
Estou precisando destacar algumas linhas em um DbGrid de acordo com um determinado campo, ou seja, possuo um campo com o nome ´situacao´ e se o mesmo conter um OK como informacao, essa linha deverá ficar com uma respectiva cor:
if Form1.DataSource.DataSet.FieldByName(´situacao´).Value = ´OK´ then
DBGrid1.Canvas.Font.Color := clRed
else
DBGrid1.Canvas.Font.Color := clBlack;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawDataCell(Rect,Field,State); //cod ta funcionando..
mas ...a questao que esse código tenho no evento ondrawdatacell do grid, mas com o clicar do mouse fico com minha linha azul (padrão windows) e a cor (por exemplo o preto) fica muito dificil de ler.. portanto, necessitaria que a cor de fundo da linha tambem fosse alterada!
Sugestão ?
obs.: trocar a cor de fonte nao resolve, preciso tratar da selecao do clicar com o mouse tirando o azul padrao windows. :roll:
Estou precisando destacar algumas linhas em um DbGrid de acordo com um determinado campo, ou seja, possuo um campo com o nome ´situacao´ e se o mesmo conter um OK como informacao, essa linha deverá ficar com uma respectiva cor:
if Form1.DataSource.DataSet.FieldByName(´situacao´).Value = ´OK´ then
DBGrid1.Canvas.Font.Color := clRed
else
DBGrid1.Canvas.Font.Color := clBlack;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawDataCell(Rect,Field,State); //cod ta funcionando..
mas ...a questao que esse código tenho no evento ondrawdatacell do grid, mas com o clicar do mouse fico com minha linha azul (padrão windows) e a cor (por exemplo o preto) fica muito dificil de ler.. portanto, necessitaria que a cor de fundo da linha tambem fosse alterada!
Sugestão ?
obs.: trocar a cor de fonte nao resolve, preciso tratar da selecao do clicar com o mouse tirando o azul padrao windows. :roll:
Ce
Curtir tópico
+ 0
Responder
Posts
02/07/2004
Motta
dbgrid.gdFocused in State informa se a célula está focada.
vc pode tratar isto e inverter as cores.
eu faço isto no DrawColumnCell
vc pode tratar isto e inverter as cores.
eu faço isto no DrawColumnCell
procedure TfrmCons.DBGrid1DrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure MudaCor (Fundo,Fonte: TColor); begin with DBGrid1.Canvas do begin Brush.Color := Fundo; Font.Color := Fonte; FillRect(Rect); TextOut(Rect.Left,Rect.Top,Column.Field.DisplayText); end; end; begin with DBGrid1 do begin if qryConsultasCONDICAO.AsString = ´x´ then MudaCor(clWhite,clGreen) else MudaCor(clWhite,clBlue); //Não esqueça de colocar a opção dgRowSelect como True na options do DBGrid. // Inverte a cor da celula focada if gdFocused in State then Mudacor(Font.Color,Brush.Color); end; end;
Responder
Gostei + 0
05/07/2004
Ce
Blz :lol:
era exatamente isso q precisava. !
mas.. mesmo colocando TRUE meu dgrowSelect do Grid, ele nao fica selecionado .. paciência.. :lol:
valeu
era exatamente isso q precisava. !
mas.. mesmo colocando TRUE meu dgrowSelect do Grid, ele nao fica selecionado .. paciência.. :lol:
valeu
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)