2016-05-04 1 views
0

Delphi 10.1 Berlin. ListView.ItemAppearance = DynamicAppearance. Je veux changer l'image dans ListViewItem dans Runtime.Changer la listeAfficher l'image lors de l'exécution Delphi 10.1 Berlin

View

Mon code:

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; 

fin;

Résultat: toutes les images sont rouges (Image1 aussi).

Before

After

Qu'est-ce que je fais mal?

Project source

+0

OK, j'ai trouvé une décision. Le problème était dans Bitmap.Assign. La méthode normale est TListItemImage (LsvAl.Items [k] .Objects.FindDrawable ('Imp1')). Bitmap: = Image2.Bitmap; – Rusland

+0

Il est difficile de savoir quand assigner() un btimap et quand: = un bitmap. – nolaspeaker

Répondre

0

où est un addon - après l'attribution d'un bitmap que vous pouvez faire le propriétaire de l'article par AItem.OwnsBitmap: = True;