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