![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в ListBox-e рисовать разные значки? [D7, WinXP]
tytus © (2004-12-07 11:04:00)Добрый день всем. В процедуре ListBoxDrawItem рисую:
IL1.Draw(LB1.Canvas,Rect.Left,Rect.Top,0);// IL-ImageList
Мне нужно для одного итема листбокса нарисовать другой значек. Когда меняю индекс значка в IL.Draw , то перерисовуются все значки. Подскажите как с этим бороться.
ЮЮ (2004-12-07 11:26:00) [1]procedure TTgListFm.LB1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
imageIndex: integer;
begin
with LB1.Canvas do
begin
FillRect(Rect);
if Index = 0 then imageIndex:= 0 else imageIndex:= 1;
IL1.Draw(LB1.Canvas,Rect.Left,Rect.Top, imageIndex);
TextOut(Rect.Left+16,Rect.Top,LB1.Items[index]);
end;
end;
tytus (2004-12-07 11:20:00) [2]>ЮЮ
procedure TTgListFm.LB1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with LB1.Canvas do
begin
FillRect(Rect);
IL1.Draw(LB1.Canvas,Rect.Left,Rect.Top,0);//?????????
TextOut(Rect.Left+16,Rect.Top,LB1.Items[index]);
end;
end;
Добавляю новый итем, индекс его знаю, а если меняю в Draw 0 на 1(всего два значка), то перерисовываются ВСЕ значки...
ЮЮ (2004-12-07 11:13:00) [3]так ты ставь индекс значка тот, который ты ассоциируещь с рисуемой в данный момент строкой (этот код рисования для каждой строки строки один)