Delphi:列表视图的绘制列

时间:2011-08-15 09:27:08

标签: delphi listview

我使用OwnerDraw绘制列表视图。我需要画第一列。但我无法理解。

我试过了:

procedure TFrame6.DownloadListCustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
    var
      R: TRect;
    begin                  
      DefaultDraw := False;
      Sender.Canvas.Brush.Color := $F7F7F7;
      Sender.Canvas.Brush.Style := bsSolid;
      R := ARect;
      R.Right := ListView_GetColumnWidth(DownloadList.Handle, DownloadList.Columns[0].Index);
      Sender.Canvas.FillRect(R);  
      DefaultDraw := True;
    end;

但是我画了一些东西。如何正确绘制,项目和背景?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想在列表上进行大量自定义,我建议您使用VirtualStringTree。它易于使用,几乎任何东西都是可能的,而且大多数都是免费软件。该组件可以在Soft-Gems下载,很少有例子here

答案 1 :(得分:1)

评论摘要:

我建议您阅读this delphiDabbler article并希望它包含足够的信息来解决您的问题。例如。 Example 1显示了如何更改背景,Example 4显示了可以更改项目外观的位置。

小提示:如果您不想绘制文本,请不要在处理程序的末尾将DefaultDraw恢复为True。