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;
I experienced a similar issue on TDBGrid.
Try to call Canvas.Refresh
after you reassign the Canvas.Font properties.