Colorir linha selecionada na DBGrid
Olá pessoal!
O tópico parece bobo, mas eis que já varri a internet em busca da solução e ainda naum encontrei.
Problema:
Possuo uma DBGrid onde cadastro os itens do pedido, com isso ela está com a propriedade dgRowSelected = False, e preciso que a linha que estou ediando fique destacada, mas só consigo isso com o dgRowSelected = True.
Alguém já passou por esse problema?
Estou usando o gdSelected, mas o mesmo só pinta a célula que selecionei.
Obrigado!
O tópico parece bobo, mas eis que já varri a internet em busca da solução e ainda naum encontrei.
Problema:
Possuo uma DBGrid onde cadastro os itens do pedido, com isso ela está com a propriedade dgRowSelected = False, e preciso que a linha que estou ediando fique destacada, mas só consigo isso com o dgRowSelected = True.
Alguém já passou por esse problema?
Estou usando o gdSelected, mas o mesmo só pinta a célula que selecionei.
Obrigado!
Webjoel
Curtidas 0
Melhor post
Daniel Qualhato
16/11/2015
Muito Obrigado Pessoal, Estava precisando. estou desenvolvendo em delphi xe8 e windos 10. Quando a Aplicação era executada no Windows 7 não mostrava a seleção, apenas duas linhas bem apagadas. Pois estava usando o gdSelected = true.
Agora com esse Código ficou 100%
Agora com esse Código ficou 100%
GOSTEI 1
Mais Respostas
Webjoel
24/04/2008
Olá Pessoal!
Resolvi o problema, Deus Salve o Google! Basta ser insistente...hehe
Eis o código:
Resolvi o problema, Deus Salve o Google! Basta ser insistente...hehe
Eis o código:
THackDBGrid = class(TDBGrid); //declarar essa linha no Type procedure TPedidoForm.DBGrid1CellClick(Column: TColumn); var Row, ACol: integer; begin Row := THackDBGrid(DBGrid1).Row; ACol := 1; while ACol <= Pred(THackDBGrid(DBGrid1).ColCount) do begin DBGrid1DrawColumnCell(DBGrid1, THackDBGrid(DBGrid1).CellRect(ACol, Row), (ACol - 1), DBGrid1.Columns.Items[(ACol - 1)], [gdSelected, gdFocused]); Inc(ACol); end; end; procedure TPedidoForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin With dbGrid1 do begin if (gdSelected in State) then begin Canvas.Font.Style := Canvas.Font.Style +[fsBold]; Canvas.Font.Color := clblue; end; DefaultDrawDataCell(Rect, Columns[DataCol].Field, State); end; end;
GOSTEI 0
Webjoel
24/04/2008
Olá pessoal!
Descartem meu post anterior, esse procedimento anterior resolveu para um lado e piorou para outro, quando edita um valor ele dá problemas.
Eis outra solução, essa encontrada aqui no Fórum postada pelo Jáder,
Evento DrawColumnCell da DBGrid
Tem muita gente ai com o mesmo problema! Tá resolvido, foi o que trouxe o resultado perfeito! Valeu.
Descartem meu post anterior, esse procedimento anterior resolveu para um lado e piorou para outro, quando edita um valor ele dá problemas.
Eis outra solução, essa encontrada aqui no Fórum postada pelo Jáder,
Evento DrawColumnCell da DBGrid
if DBGrid1.DataSource.DataSet.State in [dsEdit, dsInsert, dsBrowse] then begin //Cor da linha selecionada if Rect.Top = TStringGrid(DBGrid1).CellRect(DataCol,TStringGrid(DBGrid1).Row).Top then begin Canvas.FillRect(Rect); Canvas.Font.Style := Canvas.Font.Style + [fsBold]; Canvas.Font.Color := clblue; DefaultDrawDataCell(Rect,Column.Field,State) end; if gdSelected in State then begin //Cor da célula selecionada Canvas.Font.Style := Canvas.Font.Style + [fsBold]; Canvas.Font.Color := clblue; Canvas.FillRect(Rect); DefaultDrawDataCell(Rect,Column.Field,State) end; end;
Tem muita gente ai com o mesmo problema! Tá resolvido, foi o que trouxe o resultado perfeito! Valeu.
GOSTEI 0
Marco Salles
24/04/2008
bem . ja conhecia o codigo , mas so não entendo o pq de usar dois If
com as mesmas instruções
com as mesmas instruções
with DbGrid1 do begin if DataSource.DataSet.State in [dsEdit, dsInsert, dsBrowse] then //Cor da linha selecionada 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;
GOSTEI 0