Hallo Petra,
wenn du eine DemoForm anhängst, dann bitte außer .DFM auch .PAS.
Nun zur ListView - es gibt zwei Modi, die du unterscheiden musst. Im Standardmodus (ListView.OwnerData = false) speichert die ListView die angezeigten Daten, im virtuellen Modus (ListView.OwnerData = true) speicherst du die Anzeigedaten in einer eigenen Speicherstruktur oder extern. Du hast wahrscheinlich im Standardmodus getestet.
Wenn du die Nummern in der ersten Spalte lückenlos haben willst, dann dienen sie wohl nur der Zählung. Beim Löschen, wie beim Einfügen oder Verschieben eines Eintrages musst du im Standardmodus relativ viel Aufwand treiben, um die Lücken zu schließen bzw. Doppelnummern zu vermeiden. Im virtuellen Modus ist das viel einfacher, da du in der dann notwendigen Ereignisroutine ListView.OnData() sofort die richtige Nummer zuweisen kannst:
Delphi-Quellcode:
procedure TDemoForm.ListViewData(Sender: TObject; Item: TListItem);
begin
Item.Caption := IntToStr(Item.Index);
...
end;
Du hast von einer Datenbank geschrieben. Wenn die drei Spalten deiner ListView zu einer Datenbanktabelle gehören, dann solltest du diese Tabelle mal beschreiben. Welche Tabellenfelder sind vorgesehen, was ist der Primärschlüssel, etc.
Grüße vom marabu