Fórum Linhas Coloridas no String Grid #233056

19/05/2004

0

Olá! Gostaria de saber como colocar cor no texto em cada linha do string grid, no caso de o cara entrasse com débito o texto ficaria em vermelho e se entrasse com crédito o texto ficaria com a cor azul!!
desde já obrigado! :wink:


Btovix

Btovix

Responder

Posts

19/05/2004

Fabio.hc

Tente assim:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if Query1Campo.Value = ´Debito´ then // coloque aqui sua condição
      DBGrid1.Canvas.Font.Color:= clRed // coloque aqui a cor desejada
   else
      DBGrid1.Canvas.Font.Color:= clBlue; // coloque aqui a cor desejada

   DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[datacol].field, State);
end;



Responder

Gostei + 0

19/05/2004

Btovix

Valeu Fábio.. mas eu tô fazendo uma entrada com [b:672b255e7b]stringgrid[/b:672b255e7b] não dbgrid. :roll: (não dá pra usar o canvas porque eu não uso query) usuário coloca um valor e se esse valor for menor que 0 eu quero colocar a linha da fonte em vermelho se for entrada coloca a linha em azul!!
Mesmo assim brigadão cara! Se vc ou mais alguém souber como eu posso alterar esses valores eu agradeço! []´s a todos! :wink:


Responder

Gostei + 0

20/05/2004

Licabh

Um exemplo de colorir uma determinada linha
No evento onDrawCell do stringgrid,

procedure TfrmAgendaRc.stgDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  i, j:Integer;
  {***}
  procedure DrawCellText;
  var
    Text: array[0..255] of Char;
   begin
     StrPCopy( Text, stg.Cells[ ACol, ARow ] );
     ExtTextOut( stg.Canvas.Handle, Rect.Left + 2, Rect.Top + 2,
                 ETO_CLIPPED or ETO_OPAQUE, @Rect, Text, StrLen( Text ),nil );
   end;
 {***}
 procedure DrawCellColor( CorLetra : TColor );
   begin
     with stg.Canvas do
     begin
       {pinta as letras com a cor desejada}
       Font.Color := CorLetra;
       DrawCellText;
     end;
   end;
  {***}
begin
    for i := 1 to stg.RowCount do
    begin
      j := pos(IntToStr(i), Linhas); 
// Nesta variável linha, coloque as linhas que possuem o conteudo que 
// vc deseja verificar
      if J > 0 then
         if stg.Cells[0, i] <> ´´ then
            if (ARow = i) then
             DrawCellColor( clRed );
    end;
end;


Espero que tenha ajudado.

][´s Aline[/code]


Responder

Gostei + 0

21/05/2004

Btovix

Olha eu agradeço a vocês que responderam e aviso que eu já consegui!! se alguém quiser pode postar aqui que eu mando o código.. mas eu acho que esse que tá aqui da licabh funciona tb!! :)


Responder

Gostei + 0

27/05/2004

Oziasl

btovix
qual as instruções você usou para resolver o problema. Estou com esse problema também. ozias


Responder

Gostei + 0

27/05/2004

Oziasl

btovix
como faço pegar o seu código, referente a esse assunto. Estou com esse problema também. Ozias


Responder

Gostei + 0

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

Aceitar