Главная страница
    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.46 MB
Время: 0.039 c
2-1194511180
Ega23
2007-11-08 11:39
2007.12.02
Отловить момент активизации фрейма


2-1194273663
-=Le][=-
2007-11-05 17:41
2007.12.02
Как узнать откуда запущен чужой процес?


11-1178992162
Dmitriy___
2007-05-12 21:49
2007.12.02
Collapse и SetItemState


15-1193777739
Принтер
2007-10-30 23:55
2007.12.02
Бытовые струйники энд лазерные притеры


15-1193540042
Асм
2007-10-28 05:54
2007.12.02
ассемблер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский