ListView и кастомная отрисовка

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

ListView и кастомная отрисовка

Сообщение velaskes » 08.07.2017 23:03:49

Всем привет! Проблема в том, что не могу в ListView
назначить отдельной строке Style шрифта или определенный Size.
Перерыл весь инет - готовые примеры не работают.
Lazarus 1.6.4

Следующий пример не пашет от слова "совсем", зато Color срабатывает :(
Код: Выделить всё
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.Index mod 2 = 0 then
    Sender.Canvas.Font.Style := [fsBold]
  else
    Sender.Canvas.Font.Style := [];
end;     
Последний раз редактировалось velaskes 08.07.2017 23:44:46, всего редактировалось 1 раз.
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

Re: ListView и кастомная отрисовка

Сообщение zub » 08.07.2017 23:20:24

Ну какже не работают. у меня когдато работали
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: ListView и кастомная отрисовка

Сообщение velaskes » 08.07.2017 23:24:36

zub писал(а):Ну какже не работают. у меня когдато работали

Проведите эксперемент на живую) На англоязычном форуме по Лазарю
промелькнуло сообщение (от 2011) что это вообще бага... :|
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

Re: ListView и кастомная отрисовка

Сообщение zub » 08.07.2017 23:31:34

Никто не говорит что без багов. но работают.

>>Проведите эксперемент на живую)
приведенный в первом посте кусок кода явно не проходил такого эксперимента
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: ListView и кастомная отрисовка

Сообщение vitaly_l » 08.07.2017 23:36:48

velaskes писал(а):это вообще бага

Код: Выделить всё
var
  textStyle: TTextStyle;
begin
textStyle := Sender.Canvas.TextStyle;
{здесь заполняете стиль как надо и потом присваиваете}
Sender.Canvas.TextStyle := textStyle;
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ListView и кастомная отрисовка

Сообщение velaskes » 08.07.2017 23:59:44

vitaly_l
Изображение
мдэ) Изменений не заметил...
zub писал(а):приведенный в первом посте кусок кода явно не проходил такого эксперимента

; <- в этом смысле? :D
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

Re: ListView и кастомная отрисовка

Сообщение vitaly_l » 09.07.2017 09:42:54

velaskes писал(а):Изменений не заметил...

Да - это я не то посоветовал

Там есть:
Код: Выделить всё
ListView1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean);

У него есть ARect: TRect; с помощью ARect - можно рисовать самому. Соответственно задавать шрифты и прочие установки. Но возможно есть ещё варианты.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ListView и кастомная отрисовка

Сообщение velaskes » 09.07.2017 10:12:40

vitaly_l писал(а):с помощью ARect - можно рисовать самому.

что-то не нашел ничего связанного со шрифтами (Font, Canvas, etc)
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

Re: ListView и кастомная отрисовка

Сообщение vitaly_l » 09.07.2017 10:18:12

velaskes писал(а):ARect

ARect - указывает область на канвасе, в которой нужно рисовать ячейку ListView (ну или написать текст). Соответственно, отключаете стандартное рисование (DefaultDraw) и рисуете всё сами. Я так рисую в стринг-гриде, но я не уверен, что точно также получится рисовать и в ListView. Просто дал идею, как вариант.

Добавлено спустя 4 минуты 39 секунд:
Вот так жирный текст работает:

Код: Выделить всё
  DefaultDraw := false;// если оставить true, то будет рисовать жирным поверх при наведении мышкой
  Sender.Canvas.Font.Color:=clGreen;
  Sender.Canvas.Font.Style:=[fsBold];
  Sender.Canvas.TextOut(0,Item.Index*16,Item.Caption); 
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47

Рейтинг@Mail.ru