Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TListView и цвета отдельных итемов [D7, WinXP]


$HiC0 ©   (2005-06-23 16:34:00) 

Добрый день!
Искал, может плохо, но пока не нашел ответа казалось-бы на очень простой вопрос.
У меня есть список - набор цифр, который я размещаю столбиком в TListView. В ходе работы программы необходимо подсветить некоторые цифры из набора (выделить их другим цветом или шрифтом, а лучше и тем и другим). Изначально пытался сделать это в ListBox'е, но интуитивно понял что у него нет соответствующих свойств и методов, стал смотреть в сторону ListView. Хотел сделать что-то вроде:
ListView1.Items[i].Font.Color := clRed;
ListView1.Items[i].Font.Bold := True;
Но не тут то было :(
Подскажите как быть?
Заранее спасибо.


$HiC0   (2005-06-23 16:52:00) [1]

Да в предыдущем посте я был прав :)) Хе... уже не могу писать нормальный код на Delphi после двухлетней работы с C#. Зарекаюсь больше на нем писать, хе... хотя у дотНета тоже своих заморочек хватает :)
2Amoeba
Спасибо! Сейчас посмотрю!


Amoeba   (2005-06-23 16:48:00) [2]


> пока не нашел ответа казалось-бы на очень простой вопрос

Вопрос, как раз далеко не простой.

Если устроит вариант с ListBox, то есть такой компонент THTMLListBox. Там такое делается легко (он и предназначен для подобных задач). Найдешь его на http://www.tmssoftware.com/
(придется только немножко поднапрячься на навигацией по сайту, чтобы увидеть его описание с картинкой).
А вот ссылка на закачку: http://www.tmssoftware.com/HTMLISTB.ZIP
А это на инструкцию, как делать форматирование: http://www.tmssoftware.com/minihtml.htm


$HiC0   (2005-06-23 16:48:00) [3]

Т.е. какие итемы подсвечивать я должен определять case-ом или какм-либо иным образом внутри этого метода? А что делать если этот лист-бох находится на мди-детеныше, который в свою очередь служит только для отображения и никакими вычислительными способностями не обладает. Вычисления и собственно результат этих вычислений получается во вне. В голову приходит только опубликовать событие DrawItem и потом в юните-вычислителе подписаться на него. Это не очень жестоко? Неужели нету более простого способа? Или я что-то не так понял? :(


rOOse   (2005-06-23 16:43:00) [4]

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  with ListView1.Canvas.Brush do
  begin
    case Item.Index of
      0: Color := clYellow;
      1: Color := clGreen;
      2: Color := clRed;
    end;
  end;
end;


-=XP=-   (2005-06-23 16:38:00) [5]

но интуитивно понял что у него нет соответствующих свойств и методов

Неправда Ваша.
OnDrawItem()


Наверх

Титульная страница Поиск, карта сайта Написать письмо