Como colorir o texto de uma certa linha de um stringrid
16/04/2021
0
preciso saber como selecionar uma certa linha de um stringrid e colorir o texto dela
Lucas
Curtir tópico
+ 0
Responder
Posts
19/04/2021
Natanael Ferreira
http://www.planetadelphi.com.br/dica/7460/-pintar-/-colorir-linhas-do-tstringgrid-baseado-no-conteudo-
Responder
19/04/2021
Winicius
Boa tarde segue a instruções.
// Este procedimento serve para pintar / colorir uma linha de um TStringGrid / String Grid baseado no conteúdo da célula, em tempo de execução.
//
// Para isto, será necessário utilizar o evento OnDrawCell do componente, disponível na aba Events do componente.
// Para entender, você deve pensar que cada vez que você insere ou deleta uma linha no TStringGrid, ele percorre célula por célula e executa este procedimento.
//
// No exemplo abaixo, meu componente TStringGrid era o "meustrgrid".
// Talvez seja necessário alterar a propriedade do componente DefaultDrawing para false.
//
//
procedure Tprincipal.meustrgridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
Const
// Aqui você define algumas cores em RGB, caso não queira utilizar as padrões do Delphi
clPaleGreen = TColor($009BFF9B);
clPaleRed = TColor($009DABF9);
begin
// A primeira linha será pintada de Cinza, já que corresponde ao cabeçalho do Grid.
if Arow=0
then meustrgrid.Canvas.Brush.color := clSilver
else
// Dependendo do conteúdo da célula na coluna 7 (que eu defini, você pode escolher qualquer coluna), a linha inteira muda de cor.
if meustrgrid.Cells[7,ARow] = 'Concluído'
then meustrgrid.Canvas.Brush.color := clPaleGreen
else
if meustrgrid.Cells[7,ARow] = 'Cancelado'
then meustrgrid.Canvas.Brush.color := clPaleRed;
// Configura a cor e tamanho do texto do Grid
meustrgrid.Canvas.Font.Color:=clblack;
meustrgrid.Canvas.Font.Size:=12;
// Pinta a linha
meustrgrid.canvas.fillRect(Rect);
meustrgrid.canvas.TextOut(Rect.Left,Rect.Top,agendamento.Cells[ACol,ARow]);
end;
// Este procedimento serve para pintar / colorir uma linha de um TStringGrid / String Grid baseado no conteúdo da célula, em tempo de execução.
//
// Para isto, será necessário utilizar o evento OnDrawCell do componente, disponível na aba Events do componente.
// Para entender, você deve pensar que cada vez que você insere ou deleta uma linha no TStringGrid, ele percorre célula por célula e executa este procedimento.
//
// No exemplo abaixo, meu componente TStringGrid era o "meustrgrid".
// Talvez seja necessário alterar a propriedade do componente DefaultDrawing para false.
//
//
procedure Tprincipal.meustrgridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
Const
// Aqui você define algumas cores em RGB, caso não queira utilizar as padrões do Delphi
clPaleGreen = TColor($009BFF9B);
clPaleRed = TColor($009DABF9);
begin
// A primeira linha será pintada de Cinza, já que corresponde ao cabeçalho do Grid.
if Arow=0
then meustrgrid.Canvas.Brush.color := clSilver
else
// Dependendo do conteúdo da célula na coluna 7 (que eu defini, você pode escolher qualquer coluna), a linha inteira muda de cor.
if meustrgrid.Cells[7,ARow] = 'Concluído'
then meustrgrid.Canvas.Brush.color := clPaleGreen
else
if meustrgrid.Cells[7,ARow] = 'Cancelado'
then meustrgrid.Canvas.Brush.color := clPaleRed;
// Configura a cor e tamanho do texto do Grid
meustrgrid.Canvas.Font.Color:=clblack;
meustrgrid.Canvas.Font.Size:=12;
// Pinta a linha
meustrgrid.canvas.fillRect(Rect);
meustrgrid.canvas.TextOut(Rect.Left,Rect.Top,agendamento.Cells[ACol,ARow]);
end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)