Пример простого шрифта TListView OwnerDraw Размер шрифта и цвет? - PullRequest
4 голосов
/ 02 марта 2012

Я пытаюсь владелец нарисовать элемент управления List View в режиме отчета с 4 столбцами, используя OnCustomDrawItem.

Когда я пытаюсь изменить Canvas.font.color, и это все, что я делаю,У меня нет проблем.

Если я установил canvas.font.size, я обнаружу, что размер текста, нарисованного элементом управления, не изменится.

Если я попытаюсь захватить властьОкраска текста, изнутри OnCustomDrawItem, найти не могу.Я знаю, как использовать OnCustomDraw для рисования в фоновой области, но я хочу создать элемент списка, чтобы настроить цвет, имя шрифта и размер шрифта текста.

Я знаючто есть некоторые проблемы с использованием Canvas в контексте отрисовки владельца ListView, и некоторые ограничения того, что вы можете делать в 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 Ответ

10 голосов
/ 02 марта 2012

У меня возникла похожая проблема с TDBGrid.

Попробуйте вызвать Canvas.Refresh после переназначения свойств Canvas.Font.

...