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

标签 delphi ownerdrawn tlistview

我正在尝试使用 OnCustomDrawItem 在报告模式下绘制一个包含 4 列的 ListView 控件。

当我尝试更改 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;

最佳答案

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

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

关于delphi - 简单的 TListView OwnerDraw 文本字体大小和颜色示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537433/

相关文章:

delphi - 如何在 TEdit 中显示占位符

delphi - Delphi XE4 中使用 SVN 进行单文件版本控制

Delphi Berlin : FMX-TListView, 在 Windows 和 Android 之间切换

delphi - 在 Delphi 中检索 ListView 项值的正确方法是什么

delphi - 修复Delphi中表单中的方法声明中的错误

delphi - 如何在 RichEdit 中保存然后恢复垂直滚动位置

delphi - 复合组件的选择框未正确绘制

c++ - 所有者绘制的窗口

c# - 如何使用 C#(Windows 窗体)启用控件的双缓冲?

c++ - 如何在所有者绘制的 MFC CMenu 派生菜单中显示复选框?