简单的TListView OwnerDraw文本字体大小和颜色示例?

时间:2012-03-02 17:09:37

标签: delphi ownerdrawn tlistview

我正在尝试使用OnCustomDrawItem在4个列的报告模式下绘制列表视图控件。

当我尝试更改Canvas.font.color时,我就是这样,我没有问题。

如果我设置canvas.font.size,我发现控件绘制的文本大小没有变化。

如果我试图从OnCustomDrawItem中接管文本的绘画,我发现我做不到。我知道如何使用OnCustomDraw在背景区域绘制,但我想自定义绘制listview ITEM,以便我可以设置文本的颜色和字体名称以及字体大小。

我知道在ListView所有者绘制的上下文中使用Canvas存在一些问题,以及在ListView中可以执行的操作的一些限制。

procedure TForm1.MyListViewCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    Sender.Canvas.Font.Size := 13; // NO effect.
    Sender.Canvas.Font.Color := clRed; // WORKS.
    Sender.Canvas.Font.Style  :=Sender.Canvas.Font.Style + [fsBold]; // WORKS!
end;

1 个答案:

答案 0 :(得分:10)

我在TDBGrid上遇到过类似的问题。

重新分配Canvas.Font属性后,尝试调用Canvas.Refresh