Главная страница
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.06 c
1-1084224786
demonyator
2004-05-11 01:33
2004.05.23
Содержимое файла Word


14-1083499422
TUser
2004-05-02 16:03
2004.05.23
SetLength


3-1082966607
PFR
2004-04-26 12:03
2004.05.23
Прерывание запроса к DB2 через ADOQuery


3-1083245382
Korefey
2004-04-29 17:29
2004.05.23
SQL


14-1083762653
Undert
2004-05-05 17:10
2004.05.23
Блин, задолбало!