![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иконки в 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]Твой метод самый лучший