Главная страница
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.02 c
2-1194522494
Neo
2007-11-08 14:48
2007.12.02
остаточные файлы


15-1192888838
TwentyThird
2007-10-20 18:00
2007.12.02
Как не скучать по "совку"? Поделить на 100 и радоваться!


15-1192084197
de.
2007-10-11 10:29
2007.12.02
to Delphi 7


2-1194450966
Kick
2007-11-07 18:56
2007.12.02
UDPClient, UDPServer, TCPClient, TCPServer


15-1193763526
Time
2007-10-30 19:58
2007.12.02
Помощь по делфи Молодому учителю