Главная страница
    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.043 c
2-1194360069
ArrotVazyPror
2007-11-06 17:41
2007.12.02
где скачать музыку


15-1193766687
@!!ex
2007-10-30 20:51
2007.12.02
где почитать про дебагинг под Delphi


15-1194039339
KilkennyCat
2007-11-03 00:35
2007.12.02
Вот, держу в руках дивиди. RAD STUDIO 2007 от CODE GEAR


3-1185369135
Мурзилка
2007-07-25 17:12
2007.12.02
Hint в QuantumGrid


4-1172864916
DevilDevil
2007-03-02 22:48
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский