Nehmen wir an wir haben in einem
Listview zwei Spalten: Name und dazugehörige E-Mail Adresse. Wenn ich jetzt an eine Person eine Mail schicken will, sollte man nicht auf die zweite Spalte im
Listview zugreifen, sondern auf eine Datenstrucktur, die der Ansicht im
Listview zugrundeliegt. Zum Beispiel ein Array of Record:
Delphi-Quellcode:
type
TKontakt = record
ID: Integer;
Name: String[255];
Mail: String[255];
end;
Wobei ID der Index des Eintrages im
Listview sein kann. Schiebst du jetzt noch eine Spalte dazwischen, musst du nicht überall gucken, wo du auf die zweite Spalte zugreifst und dies in die dritte Spalte ändern, weil die E-Mail Adresse ja jetzt in der dritten Spalte steht. Natürlcih musst du jetzt darauf achten, dass die Eintrage synchron sind mit der zurgrundeliegenden Datenstruktur. Dieser Aufwand ist aber zu verschmerzen. Und je komplexer die Datenstrukturen sind, desto mehr Probleme bekommst du, wenn du Kontrollelemente zur Datenhaltung missbrauchst.
Die ImageList gehgört zum
Listview. Aber die einzelnen Einträge der ImageList gehören ja irgendwie zu deinen Daten. Und wenn du an den Daten was änderst, soll sich ja auch das Icon aus der ImageListe ändern:
Delphi-Quellcode:
type
TFoobar = record
Item: ...;
ImageIndex: Integer;
end;
Änderst du jetzt waqs im
Listview führst du auch die Änderung in deiner Datenstruktur durch. Und wenn du dann den
Listview aus der Datenstruktur füllst, weißt du immer welches Icon aus der ImageListe zu deinem Eintrag gehört, weil du ja den Index mit deinem Eintrag gespeichert hast.