1 Listbox com linhas de cores diferente..

09/02/2006

Bom dia a todos...

Gostaria de escrever em um listbox varias linhas, sendo q cada linha com a cor da fonte diferente:

Exemplo:
[color=red:a6ea3ddfab]11111111111111[/color:a6ea3ddfab] [color=yellow:a6ea3ddfab]33333333333333[/color:a6ea3ddfab] [color=black:a6ea3ddfab]22222222222222[/color:a6ea3ddfab] [color=red:a6ea3ddfab]11111111111111[/color:a6ea3ddfab] [color=yellow:a6ea3ddfab]33333333333333[/color:a6ea3ddfab] [color=blue:a6ea3ddfab]55555555555555[/color:a6ea3ddfab] [color=green:a6ea3ddfab]44444444444444[/color:a6ea3ddfab]


[b:a6ea3ddfab]Tentei assim mas naum deu certo[/b:a6ea3ddfab]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i : Byte;
begin
  ListBox1.Items.Add(´1111111111111´);
  ListBox1.Items.Add(´3333333333333´);
  ListBox1.Items.Add(´2222222222222´);
  ListBox1.Items.Add(´1111111111111´);
  ListBox1.Items.Add(´3333333333333´);
  ListBox1.Items.Add(´5555555555555´);
  ListBox1.Items.Add(´4444444444444´);

  with ListBox1 do
    begin
      for i := 0 to ListBox1.Count -1 do
        begin
          if Pos(´1´,ListBox1.Items[ i&93;) > 0 then
            Canvas.Font.Color := clRed
          else if Pos(´2´,ListBox1.Items&91; i &93;) > 0 then
            Canvas.Font.Color := clBlack
          else if Pos(´3´,ListBox1.Items&91; i &93;) > 0 then
            Canvas.Font.Color := clYellow
          else if Pos(´4´,ListBox1.Items&91; i &93;) > 0 then
            Canvas.Font.Color := clGreen
          else if Pos(´5´,ListBox1.Items&91; i &93;) > 0 then
            Canvas.Font.Color := clblue;
          Canvas.TextOut(ListBox1.ItemRect(i).Left,ListBox1.ItemRect(i).Top,ListBox1.Items&91; i &93;);
        end;
    end;

end;


alguem pode me dar uma soluçao

desde jah sou muito grato.

Abraços


Rcasistemas

Currículo

Respostas

09/02/2006

Edilcimar

no listbox creio que não dá, só dá se for um richedit, dbgrid


Responder Citar

09/02/2006

Rcasistemas Currículo

Karo edilcimar... tenho certeza q isto eh possivel, eu tinha um codigo fonte com o tal codigo, soh q perdi no meio de minhas formatacaos...

Lembro q era usado realmente em um ListBox nativo do delphi....

Caso alguem saiba como fazer, agradeço muito se puder compartilhar tal codigo.

Abraços


Responder Citar

09/02/2006

Rcasistemas Currículo

Ae.. um amigo me deu a dica...

Primeiro altere propriedade Style do ListBox para lbOwnerDrawFixed , depois no evento OnDrawItem do ListBox coloque o seguinte código:
with TListBox(Control).Canvas do
  begin
    FillRect(Rect);
    if(Index mod 2 = 0)then
      Font.Color := clBlue
    else
      Font.Color := clRed;
    TextOut(Rect.Left,Rect.Top,TListBox(Control).Items[Index&93;);
  end;


Abraços


Responder Citar