Fórum DBGrid .. não fica com fundo azul qd modifico a cor de fundo #301476
01/11/2005
0
Amigos,
coloquei um DBGrid em uma tela de consulta de produtos e coloquei um código no evento OnDrawColumnCell para modificar a cor de fundo da linha para verde caso o estoque esteja superior ou vermelhor caso o estoque esteja inferior.
O problema é q qd seleciono alguma linha em q o fundo foi modificado ela não fica azul com letras brancas, somente as letras ficam brancas.
O que faço para resolver este problema?
coloquei um DBGrid em uma tela de consulta de produtos e coloquei um código no evento OnDrawColumnCell para modificar a cor de fundo da linha para verde caso o estoque esteja superior ou vermelhor caso o estoque esteja inferior.
O problema é q qd seleciono alguma linha em q o fundo foi modificado ela não fica azul com letras brancas, somente as letras ficam brancas.
O que faço para resolver este problema?
procedure TfrmProdutos.dbgConsultaDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin inherited; if cdsConsultarESTMIN.AsInteger > cdsConsultarESTOQUE.AsInteger then dbgConsulta.Canvas.Brush.Color := $CCCCFF; if cdsConsultarESTMAX.AsInteger < cdsConsultarESTOQUE.AsInteger then dbgConsulta.Canvas.Brush.Color := clMoneyGreen; dbgConsulta.DefaultDrawDataCell(Rect, dbgConsulta.columns[datacol].field, State); end;
Orlando Frade
Curtir tópico
+ 0
Responder
Posts
01/11/2005
Massuda
Você deveria levar em conta o estado da linha ao fazer a mudança; por exemplo, se for para deixar com a aparência default quando a linha estiver selecionada, ficaria assim...
procedure TfrmProdutos.dbgConsultaDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin // a princípio, isso não é necessário //inherited; if not (gdSelected in State) then begin if cdsConsultarESTMIN.AsInteger > cdsConsultarESTOQUE.AsInteger then dbgConsulta.Canvas.Brush.Color := $CCCCFF; if cdsConsultarESTMAX.AsInteger < cdsConsultarESTOQUE.AsInteger then dbgConsulta.Canvas.Brush.Color := clMoneyGreen; end; // o correto seria chamar DefaultDrawColumnCell dbgConsulta.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)