Fórum Selecionar a linha toda em um DbGrid sem usar RowSelect #348546
06/11/2007
0
Necessito selecionar (pintar) toda a linha ativa de um dbGrid sem utilizar o comando RowSelect porque ele impede a navegação entre as colunas
Se alguem suber como impedir o travamento da navegação tb serve.
Abraços
Adssistemas
Curtir tópico
+ 0Posts
07/11/2007
Jáder Medeiros
if DBGrid1.DataSource.DataSet.State in [dsEdit, dsInsert, dsBrowse] then //Cor da linha selecionada if Rect.Top = TStringGrid(DBGrid1).CellRect(0,TStringGrid(DBGrid1).Row).Top then begin DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.Brush.Color := TColor($F0CAA6); DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State) end; if gdSelected in State then begin //Cor da célula selecionada DBGrid1.Canvas.Brush.Color := TColor($808000); DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State) end
Citei este texto no tópico 88876 [url]http://forum.devmedia.com.br/viewtopic.php?t=88876[/url].
Gostei + 0
14/11/2007
Aasn
Gostei + 0
14/11/2007
Aasn
mudar de
if Rect.Top = TStringGrid(DBGrid1).CellRect( 0 ,TStringGrid(DBGrid1).Row).Top then
para
if Rect.Top = TStringGrid(DBGrid1).CellRect( DataCol ,TStringGrid(DBGrid1).Row).Top then
assim, quando houver muitas colunas fora da área visível do grid, ao rolar essas colunas e mudar a linha o destaque continuará ok.
[]´s
AASN
Gostei + 0
29/04/2008
Webjoel
Tinha encontrado outra solução, mas essa matou, valeu Jáder!!!!
Gostei + 0
17/12/2012
Danielrsanches
Só uma pequena dica:
mudar de
if Rect.Top = TStringGrid(DBGrid1).CellRect( 0 ,TStringGrid(DBGrid1).Row).Top then
para
if Rect.Top = TStringGrid(DBGrid1).CellRect( DataCol ,TStringGrid(DBGrid1).Row).Top then
assim, quando houver muitas colunas fora da área visível do grid, ao rolar essas colunas e mudar a linha o destaque continuará ok.
eu sei que isto é velho, mas precisei hoje e encontrei este post que não deu 100% certo...
a forma perfeita do código é a seguinte:
if Rect.Top = TStringGrid(DBGrid1).CellRect( 0 ,TStringGrid(DBGrid1).Row).Top then
pois se substituir o 0 pelo DataCol, aí sim quando tiver muitas colunas não vai funcionar...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)