Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизФича/глюк/(не)задокументированная возможность ? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c