Não é a linguagem de programação que define o programador, mas sim sua lógica

Pintar linhas selecionadas no DBGrid


Bom vamos pinta uma linha selecionada num TDBGrid.
Sei que por default isso acontece quando você marca a opção em: Options / dgRowSelect.


Mass no meu casso eu não posso marcar essa opção pois preciso colocar um código e com essa opção marcada não consigo identificar a coluna selecionada. 

Entãooo no evento de DrawColumnCell do TDbGrid coloque o código abaixo

procedure TForm4.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with DbGrid1 do begin
    if  DataSource.DataSet.State in [dsEdit, dsInsert, dsBrowse] then
      if (Rect.Top = TStringGrid(DBGrid1).CellRect( DataCol ,TStringGrid(DbGrid1).Row).Top)
          or( gdSelected in State)  then begin
        Canvas.FillRect(Rect);
        Canvas.Brush.Color := clblue;
        DefaultDrawDataCell(Rect,Column.Field,State)
    end;
  end;
end;


0 comentários:

Postar um comentário