Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Фича/глюк/(не)задокументированная возможность ?   Найти похожие ветки 

 
korneley ©   (2007-10-30 22:36) [0]

в обработчике TListView.OnCustomDrawSubItem(), после вызове метода TextWidth(), любые изменения шрифта игнорируются. Вообще-то атрибуты шрифта меняются, но вывод идет только с теми атрибутами, которые были установлены до TextWidth(). Вот, наскоро, но позволит проверить:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
 Item: TListItem; SubItem: Integer; State: TCustomDrawState;
 var DefaultDraw: Boolean);
var i : integer;
   r : TRect;
begin
 with Sender.Canvas do begin
   r := Item.DisplayRect(drLabel);
   r.Left := 0;
   for i := 0 to subitem - 1 do
     inc(r.Left, TListView(Sender).Columns[i].Width);
   r.Right:= r.Left + TListView(Sender).Columns[SubItem].Width;
   Font.Style := Font.Style + [fsBold];
   Font.Color := clGray;
   i := TextWidth(Item.SubItems[SubItem - 1]);
   TextRect(r, r.Left + TListView(Sender).Columns[SubItem].Width - i - 4,
            r.Top - 1, Item.SubItems[SubItem - 1]);

   DefaultDraw := false;
 end;
end;

Так все работает, сабитемы толстые и серые (только не спрашивайте меня, зачем это нужно - пример). Если оператор с вызовом TextWidth() поставить перед изменением цвета шрифта - отрисуется цветом по умолчанию, если еще выше то и "болд" не увидим.
 
 Таки меня жутко интересует, это нормально? И что делать бедному человеку, если ему надо 2 строки с разным стилем и обе вправо, одна к другой...


 
wicked ©   (2007-10-31 00:37) [1]

каша какая то....
Font кому принадлежит?
и что в результате мы должны получить, используя неизвестно чей Font?


 
wicked ©   (2007-10-31 00:45) [2]

прошу прощения... нашел, кому принадлежит Font :)
тем не менее, скорей всего там собака и зарыта - как и когда используется св-во Font у Canvas-а, а также, как его использует ф-ция TextWidth


 
Германн ©   (2007-10-31 00:45) [3]


> wicked ©   (31.10.07 00:37) [1]
>
> каша какая то....
> Font кому принадлежит?

with Sender.Canvas do begin


 
korneley ©   (2007-10-31 08:03) [4]

Самое интересное, если вы проделаете то же самое, скажем, с TForm.Canvas (изменение Font после TextWidth()), то результат будет абсолютно другим, как я бы сказал, ожидаемым. И ширину текста можно замерять любое к-во раз, бес всяких последствий для шрифта :)

> каша какая то....
 Ну, сначала вычисляем ректангл сабитема, потом меняем шрифт, затем выводим, все линейно... я ж говорил - наскоро.


 
_xxx_   (2007-10-31 10:56) [5]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=662&mode=print


 
korneley ©   (2007-10-31 11:27) [6]


> _xxx_   (31.10.07 10:56) [5]
"Я возвращаюсь в деревню, чтобы стать ближе к земле..." (с) В данном случае - к GDI 8-(



Страницы: 1 вся ветка

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
4-1179507014
Bacardi
2007-05-18 20:50
2007.12.02
Очередь печати


2-1194237848
Masher
2007-11-05 07:44
2007.12.02
Консольный калькулятор


15-1194176020
Evanescence
2007-11-04 14:33
2007.12.02
С жестким диском проблемы


1-1189580697
cantalia
2007-09-12 11:04
2007.12.02
Событие из DLL в Main Application


15-1193901205
Slider007
2007-11-01 10:13
2007.12.02
С днем рождения ! 1 ноября 2007 четверг