Fórum Trocando cor da fonte em Grid com RowSelect #333096
14/11/2006
0
Putz... sei que deve ser algo bem fácil, mas não estou conseguindo fazer.... Procurei no fórum mas não achei nenhum tópico na mesma situação...
É o seguinte: Tenho um DBGrid com dgRowSelect. Estou manipulando o evento OnDrawColumnCell. Se o campo QUANT for igual a 0 a fonte deve ser vermelha caso contrário deve verificar se essa linha está selecionada no grid. Se estiver selecionada a fonte é branca se não é preta.
meu evento está assim:
Esse código funciona perfeitamente se o RowSelect não estiver habilitado. Isso porque quando ele está habilitado o Grid só retorna gdFocused para a Coluna 0 do Grid. Sendo assim, quando eu seleciono no grid uma linha onde quantidade é diferente de 0, a primeira coluna (0) fica com fonte branca e o resto com fonte preta...
Sei que tenho que trocar a condição ´if gdFocused in State then´ por alguma coisa que retorne se essa coluna pertence à linha selecionada ou não.
Alguém sabe o que fazer?
t+!
É o seguinte: Tenho um DBGrid com dgRowSelect. Estou manipulando o evento OnDrawColumnCell. Se o campo QUANT for igual a 0 a fonte deve ser vermelha caso contrário deve verificar se essa linha está selecionada no grid. Se estiver selecionada a fonte é branca se não é preta.
meu evento está assim:
procedure Tfrminfobaixa.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin p := DBGrid2.Canvas.Font.Color; if ClientDataSet1QUANT.AsInteger<>0 then begin if gdFocused in State then DBGrid2.Canvas.Font.Color := clWhite else DBGrid2.Canvas.Font.Color := clBlack; end else DBGrid2.Canvas.Font.Color := clRed; DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
Esse código funciona perfeitamente se o RowSelect não estiver habilitado. Isso porque quando ele está habilitado o Grid só retorna gdFocused para a Coluna 0 do Grid. Sendo assim, quando eu seleciono no grid uma linha onde quantidade é diferente de 0, a primeira coluna (0) fica com fonte branca e o resto com fonte preta...
Sei que tenho que trocar a condição ´if gdFocused in State then´ por alguma coisa que retorne se essa coluna pertence à linha selecionada ou não.
Alguém sabe o que fazer?
t+!
Delphi32
Curtir tópico
+ 0
Responder
Posts
14/11/2006
Delphi32
Resolvi usando:
O único problema é que tive que ativar dgAlwaysShowSelection, o que não foi algo tão ruim assim.
t+!
if ClientDataSet1QUANT.AsInteger<>0 then begin if (gdSelected in State) or (DBGrid2.SelectedRows.CurrentRowSelected) then DBGrid2.Canvas.Font.Color := clWhite else DBGrid2.Canvas.Font.Color := clBlack; end
O único problema é que tive que ativar dgAlwaysShowSelection, o que não foi algo tão ruim assim.
t+!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)