Simple TListView OwnerDraw Text Font Size and Color example?

有些话、适合烂在心里 提交于 2019-11-27 06:21:42

问题


I am trying to owner draw a List View control in report-mode with 4 columns, using OnCustomDrawItem.

When I try to change the Canvas.font.color, and that's all I do, I have no problems.

If I set canvas.font.size, I find that there is no change in the size of the text drawn by the control.

If I try to take over the painting of the text, from within OnCustomDrawItem, I find I can not. I am aware of how to use OnCustomDraw to draw in the background area, but I want to custom draw a listview ITEM, so that I can set the color and font name and font size of the text.

I know that there are some problems with using Canvas in the context of ListView owner draw, and some limitations of what you can do in a 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:


I experienced a similar issue on TDBGrid.

Try to call Canvas.Refresh after you reassign the Canvas.Font properties.



来源:https://stackoverflow.com/questions/9537433/simple-tlistview-ownerdraw-text-font-size-and-color-example

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!