Colorir colunas do listview

Delphi

02/04/2005

Gostaria de saber como faço pra colorir uma coluna de valores q tenho em um listview?

Abraços
Julio


Tuskinhu

Tuskinhu

Curtidas 0

Respostas

Massuda

Massuda

02/04/2005

Assumindo que você está usando o ListView em modo Report, use os eventos [b:8897004ca7]OnCustomDrawItem[/b:8897004ca7] e [b:8897004ca7]OnCustomDrawSubItem[/b:8897004ca7] para colorir as colunas; OnCustomDrawItem irá colorir a primeira coluna, OnCustomDrawSubItem as demais colunas.

Por exemplo, esse código vai gerar colunas com cores alternando entre amarelo e branco:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  Sender.Canvas.Brush.Color := clYellow;
end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  if Odd(SubItem) then begin
    Sender.Canvas.Brush.Color := clWhite;
  end
  else begin
    Sender.Canvas.Brush.Color := clYellow;
  end;
end;



GOSTEI 0
Tuskinhu

Tuskinhu

02/04/2005

Bem, consegui o q queria... agora surgiu uma outra dúvida... dentro tenho um campo monetário, e eu gostaria de alinhar a esquerda... como faço?


GOSTEI 0
Massuda

Massuda

02/04/2005

... dentro tenho um campo monetário, e eu gostaria de alinhar a esquerda... como faço?
Imagino que seria alinhar a direita... Este código para o evento OnCustomDrawItem pode ser adaptado para o evento OnCustomDraweSubItem (não testei)...
procedure TForm1.ListView1OnCustomDrawItemSender: TCustomListView; 
  Item: TListItem; State: TCustomDrawState; 
  var DefaultDraw: Boolean); 
var
  S: string;
  R: TRect;
  Flags: Integer;
begin
  // Neste exemplo, os itens ímpares são alinhados à direita
  Flags := DT_VCENTER; // centra na vertical
  if Odd(Item.Index) then begin
    Flags := Flags or DT_RIGHT; // alinha à direita
  end
  else begin
    Flags := Flags or DT_LEFT; // alinha à esquerda
  end;

  // escreve o texto
  S := Item.Caption;
  R := Item.GetDisplayRect(drLabel);
  DrawText(Sender.Canvas.Handle, PChar(S), Length(S), R, Flags); 
end;



GOSTEI 0
Jasonmello

Jasonmello

02/04/2005

como faço para alterar a cor do caption do título da coluna?


GOSTEI 0
Abobre

Abobre

02/04/2005

Aproveitando o tópico, como que faço para aumentar a altura de cada linha do listview ?

ABraços


GOSTEI 0
POSTAR