2016-05-04 4 views
0

Delphi 10.1 Berlin. ListView.ItemAppearance = DynamicAppearance. Я хочу изменить изображение в ListViewItem в Runtime.Изменить ListView Image at Runtime Delphi 10.1 Berlin

View

Мой код:

procedure TForm1.Button2Click(Sender: TObject); 
var 
    k:integer; 
begin 
    LsvAl.BeginUpdate; 
    for k := 0 to LsvAl.ItemCount-1 do 
    begin 
    if (k mod 2)=0 then 
    begin 
     TListItemImage(LsvAl.Items[k].Objects.FindDrawable('Imp1')).Bitmap.Assign(Image2.Bitmap); // 
     TListItemText(LsvAl.Items[k].Objects.FindDrawable('TxtNum')).TextColor:=$FFFF2346; 
    end 
    else 
    begin 
     TListItemImage(LsvAl.Items[k].Objects.FindDrawable('Imp1')).Bitmap.Assign(Image1.Bitmap); 
     TListItemText(LsvAl.Items[k].Objects.FindDrawable('TxtNum')).TextColor:=$FF009DFE; 
    end 
    end; 
    LsvAl.EndUpdate; 

конец;

В результате: все изображения красные (Image1 тоже).

Before

After

Что я делаю неправильно?

Project source

+0

ОК, я нашел решение. Проблема была в Bitmap.Assign. Обычный способ - TListItemImage (LsvAl.Items [k] .Objects.FindDrawable ('Imp1')). Bitmap: = Image2.Bitmap; – Rusland

+0

Трудно узнать, когда назначить() btimap и когда: = растровое изображение. – nolaspeaker

ответ

0

где один аддон - после назначения растрового изображения вы можете сделать владелец товара по AItem.OwnsBitmap: = True;

Смежные вопросы