Fórum Coloacar cor na célula ativa do DBGrid #256814

01/11/2004

0

Como faço para colocar cor na célula ativa do DBGrid? Estou precisando desta informação para acabar a codificação do meu programa.

Desde já agradeço...

Rodrigo Freire;..;;


Rgfreire

Rgfreire

Responder

Posts

01/11/2004

Gurc

No evento OnDrawColumnCell do DBGrid coloque

  with Sender as TDBGrid do
  begin
    if gdFocused in State then
    begin
      Canvas.Brush.Color := clYellow;
    end;
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;


A propriedade DefaultDrawing do TDBGrid corresponde a pintura padrão das células. Neste caso, a mesma se torna necessária se for desejado um retângulo de foco na(s) célula(s) selecionada(s). Faça um teste e comprove a diferença.

Acho que é isso,
Gustavo Royer Chaurais


Responder

Gostei + 0

01/11/2004

Rgfreire

A registro só assume a cor colocada no DrawCollumnCell qdo clico em cima dele. Estou usando uma pesquisa e gostaria que o registro assumisse a cor ao ser encontrado. Você pode me ajudar;???


Responder

Gostei + 0

08/11/2004

Gurc

Sem problemas, vamos tentar explicar uns conceitos aqui então.
Imagine, como você faria para preencher um DBGrid. Bom, teria de percorrer registro a registro de um DataSet, certo? Certo, é isso que o DBGrid faz, só que ele só pede para o DataSet os registros que serão mostrados na grade, os outros ele só pedirá se o usuário correr a barra de rolagens. A cada registro solicitado ao DataSet o DBGrid dispara o evento de pintura da célula, o agora chamado de OnDrawColumnCell, um para cada coluna para saber como esse registro deve ser apresentado. Desta maneira podemos apresentar inclusive imagens e muitas outras coisas em um DBGrid. Bom, com isso podemos fazer o seguinte. Digamos uma busca pela palavra TESTE no campo NOME, ok?

  (...)

  if (Field.FieldName = ´NOME´) and (Field.AsString = ´TESTE´) then
    (Sender as TDBGrid).Canvas.Brush.Color := clRed;
  
  (...)


Não testei este código, mas na teoria é assim :D. Coloque isso dentro do manipulador do evento e veja o que acontece. Se você quisesse procurar por um texto dentro de uma string use a função Pos().

  (...)

  if Pos(´TESTE´, Field.AsString) > 0 then

  (...)


Qualquer dúvida entre em contato,
Gustavo Royer Chaurais


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar