Mudando a cor de fundo de linhas diferentes de texto em um Listbox

 

Crie uma nova aplicação, insira um Listbox e altere a propriedade Style para lbOwnerDrawFixed, depois clique na propriedade Items (...) e digite alguns valores em linhas diferentes. Copie o código abaixo no evento OnDrawItem do Listbox.

 

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

var

  myColor: TColor;

  myBrush: TBrush;

begin

  myBrush := TBrush.Create;

  with (Control as TListBox).Canvas do

  begin

    if not Odd(Index) then

      myColor := clSilver

    else

      myColor := clWhite;

    myBrush.Style := bsSolid;

    myBrush.Color := myColor;

    Windows.FillRect(handle, Rect, myBrush.Handle);

    Brush.Style := bsClear;

    TextOut(Rect.Left, Rect.Top,(Control as TListBox).Items[Index]);

    MyBrush.Free;

  end;

end;

 

Não se esqueça de incluir valores no Listbox para que possa ser visto o efeito das cores. Execute a aplicação e veja a o funcionamento.

 

por Erick Rhamnusia

uploader@clubedelphi.net