Einzelnen Beitrag anzeigen

Gutelo

Registriert seit: 29. Sep 2013
152 Beiträge
 
#1

Problem mit Listview und SmallImages

  Alt 12. Apr 2014, 09:20
Hallo,

ich habe eine TListView mit ViewStyle=vsList.

Mit einem Button-Klick soll das TListView sowohl mit Text-Eintraegen gefuellt werden als auch mit den zugehoerigen kleinen Icons. Im konkreten Fall ist es eine Liste von Laendern mit den jeweiligen Landesflaggen. Die Prozedur die beim Button-Klick aufgerufen wird sieht wie folgt aus:

Delphi-Quellcode:

procedure Plot_Listview(CSet : TCountrySet; LV : TListView);
var IL : TImageList;
    z : TCountries;
    i,j : integer;
begin
  // Falls SmallImages zugewiesen, dann loesche es
  if LV.SmallImages <> nil then LV.SmallImages.Free;
  LV.Clear;
  // Erstelle ImageList
  IL := TImageList.Create(nil);
  IL.Width := 16;
  IL.Height := 11;
  i := 0;
  // Lese alle Laender in der Menge CSet ein und fuege sie der Liste hinzu
  for z in CSet do
  begin
    LV.Items.Add;
    LV.Items[i].Caption := Get_Country(z);
    LV.Items[i].ImageIndex := i;
    IL.Add(Get_Flag_BMP(z),nil); // <- Fuege Flagge der ImageList hinzu
    Inc(i,1);
  end;
  // Zuweisung der ImageList an die Listview
  LV.SmallImages := IL;
  LV.SortType := stboth;
end;
Das Problem: Wenn ich einmal auf den Button-Klicke ist alles wie es sein soll. Wenn ich jedoch ein zweites mal klicke, dann stimmen die Flaggen nicht mehr: bei sehr wenigen Laendern sind die Flaggen richtig, bei den restlichen Laendern wird immer die gleiche Flagge angezeigt.

Ich vermute, dass der Fehler bei Listview selbst liegt (Zuordnung Item <-> Bild), da die Bilder in ListView.SmallImages auch nach dem zweiten Klick in Ordnung sind (habe ich testweise in einem separaten TImage anzeigen lassen).

Irgendjemand eine Idee dazu? Fuer mich wirkt es wie ein Bug bei TListView.

Gutelo
  Mit Zitat antworten Zitat