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;
Exemplo: Download do exemplo
0 comentários:
Postar um comentário