Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.041 c
15-1193861017
Kick
2007-10-31 23:03
2007.12.02
Как прописать путь


3-1184569294
darst
2007-07-16 11:01
2007.12.02
Delphi + PHP


3-1184308098
wsv
2007-07-13 10:28
2007.12.02
Замедление DataSet.next


3-1184426535
__alex
2007-07-14 19:22
2007.12.02
Про BDE4 и BDE5


15-1194188642
AlexanderMS
2007-11-04 18:04
2007.12.02
Кодировка Windows-1251





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский