Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Как на иконке ListView нарисовать что-то   Найти похожие ветки 

 
freak   (2004-05-08 19:31) [0]

Привет всем мастерам.

Вопрос такой. Есть ListView, ViewStyle := vsIcon. Как на иконке нарисовать что-то. Например что-нибудь на манер стрелочек в углу иконок, на рабочем столе Windows.


 
Mim1 ©   (2004-05-09 00:07) [1]

Изменяйте содержимое imagelist связанного с listview.


 
freak   (2004-05-09 01:47) [2]

Это примитивно. Тем более, что если у меня примерно 50 разных иконок и есть три разных ситуации в которых нужно что-то рисовать на иконке (например, подрисовывать в углу буквы A,B,C в зависимости от ситуации на данный момент), то необходимо иметь  150 иконок. Не думаю, что это лучший выход.


 
KilkennyCat ©   (2004-05-09 03:46) [3]

Это единственный выход.
Только Вы не совсем правильно поняли совет Mim1. Разве он говорил о дополнительных иконках? Хватаете из imagelist связанного с listview нужную иконку, отрисовываете что хотите, запихиваете назад.


 
Anatoly Podgoretsky ©   (2004-05-09 11:40) [4]

Сделай 51 иконку


 
DVM ©   (2004-05-09 11:48) [5]

Owner Draw + WM_DRAWITEM - самому отрисовать итем + что угодно сверху.
Но самое быстрое все же - держать все иконки готовыми в ImageList.


 
freak   (2004-05-10 16:02) [6]

Получается примерно так (см. ниже)? Просто, но работает. Только вот, как вернуть иконку в первоначальное состояние, если понадобиться. Опять изврат какой-нибудь придумывать (например еще один ImageList куда будут сбрасываться оригиналы)?

procedure TForm1.Button1Click(Sender: TObject);
var Znak,Bitmap:TBitmap;
begin
Znak:=TBitmap.Create;
Bitmap:=TBitmap.Create;
Znak.Transparent:=True;
ImageList2.GetBitmap(0, Znak);
ImageList1.GetBitmap(0, Bitmap);
Bitmap.Canvas.Draw(0,32, Znak);
ImageList1.ReplaceMasked(0,Bitmap,clNavy);
Znak.Free;
Bitmap.Free;
end;


 
KilkennyCat ©   (2004-05-10 16:07) [7]


> (например еще один ImageList куда будут сбрасываться оригиналы)?


Просто два ImageList. Один с оригиналами, другой рабочий. Берете с оригинала, рисуете, пихаете в рабочий.  Можно один, рабочий, а оригиналы держать в одном bmp.



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
3-1082539137
Sirus
2004-04-21 13:18
2004.05.23
Установка Firebird на комп вручную...


14-1083741378
darkstalker
2004-05-05 11:16
2004.05.23
Создание нового документа в Экселе.


3-1083079941
Kein
2004-04-27 19:32
2004.05.23
как открыть InterBase базу


14-1083832263
Gorlum
2004-05-06 12:31
2004.05.23
Ну какая класная жизнь


1-1083571381
lehich
2004-05-03 12:03
2004.05.23
перемещение по строкам excel