2016-05-04 24 views
0

Delphi 10.1 Berlin. ListView.ItemAppearance = DynamicAppearance. Ich möchte Bild in ListViewItem in Runtime ändern.Listenansicht ändern Bild zur Laufzeit Delphi 10.1 Berlin

View

Mein 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; 

Ende;

Im Ergebnis: alle Bilder rot (auch Image1).

Before

After

Was mache ich falsch?

Project source

+0

OK, ich fand die Entscheidung. Das Problem war in Bitmap.Assign. Der normale Weg ist TListItemImage (LsvAl.Items [k] .Objects.FindDrawable ('Imp1')). Bitmap: = Image2.Bitmap; – Rusland

+0

Es ist schwer zu wissen, wann() eine btimap und wann: = eine Bitmap zugewiesen werden soll. – nolaspeaker

Antwort

0

wo ist ein Add-on - nach einer Bitmap zuweisen, können Sie Artikel Eigentümer von AItem.OwnsBitmap machen: = True;

Verwandte Themen