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

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

Иконки в ListView [D5, NT4]


XShura ©   (2002-06-27 09:21:00) 

Всем привет! Помогите с решением.
У меня есть ListView на котором при помощи иконок отображается
состояние некоторых устройств (например : устройство в норме - синий квадратик, устройство неисправно - красный квадратик и т.д.), но у устройств может быть комбинация состояний : неисправно и заблокировано (должен быть красный квадратик с крестиком внутри), исправно и заблокировано (синий квадратик с крестиком внутри) и т.д. Вопрос, как мне имея "на руках" иконки с "простыми" состояниями (синий, красный квадратики, крестик и т.п.) отобразить их комбинацию в ListView ? На данный момент я все комбинации картинок занес в ImageList и путем несложных вычислений получаю номер нужной иконки. Спасибо.


XShura   (2002-07-01 09:19:00) [1]

Всем привет! Со вставкой комбинаций картинок разобрался ... совмещал картинки по методу MBo, а работал с ними по методу valery_f... и как всегда небольшой вопрос ;) при вставке картинки в ImageList, ListView моргает :((, как от этого можно избавиться?


XShura   (2002-06-27 16:21:00) [2]

Хм... тоже неплохой вариант ;) буду выбирать какой использовать.....


valery_f   (2002-06-27 15:02:00) [3]

> XShura © (27.06.02 13:36) Перекручивать то можно, но при этом будут изменяться картинки на всех пунктах ListView...

Да, но что тебе мешает сделать каждому пункту по своей картинке в ImageList"е? Вариант абсолютно рабочий!


DieHard   (2002-06-27 14:20:00) [4]

В OverlayIndex указываешь индекс той картинки из TImageList, которая должна быть поверх основной. Например, крестик поверх квадратика. Левый нижний пиксель картинки с крестиком будет определять прозрачность. Единственная проблема (хотя может это только у меня такой глюк) - значения, при которых это всё работает, определяются опытным путем :) Например, OverlayIndex=0 - установить картинку, OverlayIndex=9 - снять


XShura   (2002-06-27 13:52:00) [5]

А можно поподробнее об OverlayIndex ? ..... я просто не очень во всей этой графике шарю ;)


DieHard   (2002-06-27 13:43:00) [6]

А чем не устраивает вариант с использованием OverlayIndex?
Он как раз для таких ситуаций и нужен


XShura   (2002-06-27 13:36:00) [7]

Перекручивать то можно, но при этом будут изменяться картинки на всех пунктах ListView...


valery_f   (2002-06-27 12:46:00) [8]

Во первых - иконки не обязательно должны быть квадратными (только что попробовал 64х16), во вторых - содержимое ImageList"а на ходу можно перекручивать. К примеру, в зависимости от состояния можно создать битмап - комбинацию из простых элементов (ну, скажем, квадратики в ряд :) и вживую вкинуть их в ImageList.


XShura   (2002-06-27 10:25:00) [9]

Понятно... ну тоды буду при загрузке формировать комбинации иконок и заносить их в ImageList, а потом уже действовать по своему алгоритму.

P.S. На форуме недавно, но уже нравится оперативность ответов :)) Спасибо создателям сайта, и тем кто отвечает на наши вопросы !


MBo   (2002-06-27 10:14:00) [10]

можно, но с ImageList IMHO удобнее


XShura   (2002-06-27 10:05:00) [11]

Ну вот, а говорил шо мой метод самый лучший ;) спасибо!! и маленький вопрос... неужели никак нельзя отвязаться при рисовании иконок от ImageList ? .. ну типа OnCustomDraw задействовать......


MBo   (2002-06-27 09:49:00) [12]

ну тогда что-нибудь подобное
procedure TForm1.Button1Click(Sender: TObject);
var b1,b2:TBitmap;
begin
b1:=TBitmap.create;
b2:=TBitmap.create;
imagelist1.GetBitmap(0,b1);
imagelist1.GetBitmap(1,b2);
b1.canvas.copymode:=cmMergePaint;//подбери режим
b1.canvas.draw(0,0,b2);
imagelist1.Add(b1,nil);
listview1.items[2].ImageIndex:=2;
end;


XShura   (2002-06-27 09:31:00) [13]

Если бы я видел код на мой вопрос, то я может быть и поверил ;)), но прикинь (на ты можно ? ;)) добавится хотя бы еще два состояния, которые необходимо отображать совместно с другими .... гиморно %-((


MBo   (2002-06-27 09:26:00) [14]

Твой метод самый лучший


Наверх

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