Wenn Du die Items mit Clear aus der ListView löschst, kannst Du natürlich anschließend nicht mehr darauf zugreifen, sondern musst sie neu erzeugen.
Delphi-Quellcode:
procedure TForm1.AdressdarstellungEdit ( index: integer; AAdresse: TAdresse );
var Item: TListItem;
Column : TListColumn;
begin
Item := LVAdressen.Items.Add; //Item neu anlegen
//Item.SubItems.Clear; //unnötig, da noch keine SubItems vorhanden
if CBAnordnung.ItemIndex = 0
[und so weiter]
[edit] Ich hab das Ganze jetzt mal unter Lazarus geschrieben. FAdressen ist ein array of record. Die folgende Routine wird aufgerufen, wenn das Array befüllt ist oder sich die ComboBoxReihenfolge ändert.
Delphi-Quellcode:
procedure TForm1.ListAdresses;
var i: integer;
Item: TListItem;
begin
LVAdressen.Items.BeginUpdate;
try
LVAdressen.Items.Clear;
case ComboBoxReihenfolge.ItemIndex of
0: begin
LVAdressen.Columns[0].Caption := 'Name';
LVAdressen.Columns[1].Caption := 'Vorname';
end;
1: begin
LVAdressen.Columns[1].Caption := 'Name';
LVAdressen.Columns[0].Caption := 'Vorname';
end;
end;
for i := Low(FAdressen) to High(FAdressen) do
begin
Item := LVAdressen.Items.Add;
case ComboBoxReihenfolge.ItemIndex of
0: begin
Item.Caption := FAdressen[i].Name;
Item.SubItems.Add(FAdressen[i].Vorname);
end;
1: begin
Item.Caption := FAdressen[i].Vorname;
Item.SubItems.Add(FAdressen[i].Name);
end;
end;
end;
finally
LVAdressen.Items.EndUpdate;
end;
end;
[/edit]