Hallöle,
ListView.DeleteSelected; ist Dir hoffentlich schon in die Finger gekommen.
Hier ist mal ein Prozedur von mir, wie man den Inhalt im Array nachrutscht.
Du musst nur wissen, bevor Du was nachrutsch, welche Einträge Du gelöscht hast.
Delphi-Quellcode:
procedure TMainFormMC2004.ButtonKKLokLoeschenClick(Sender: TObject);
//Markierte einträge aus der Liste entfernen -> KK Lok
var
i, n, t: integer;
begin
if ListViewKKLok.SelCount = 1 then //Nur wenn ein Eintrag ausgewählt ist
begin
i := StrToInt(ListViewKKLok.Selected.SubItems[5]);
for n := i +1 to MC2004.MenueInit.LokAnzahl -1 do //Array nachrücken
begin
MC2004.MenueInit.LokStamm[n -1] := MC2004.MenueInit.LokStamm[n];
end;
MC2004.MenueInit.LokAnzahl := MC2004.MenueInit.LokAnzahl -1; //Array kürzen
for t := 0 to ListViewKKLok.Items.Count -1 do //Restliche Indexe -1
begin
if StrToInt(ListViewKKLok.Items.Item[t].SubItems[5]) > i then
begin
ListViewKKLok.Items.Item[t].SubItems[5] := IntToStr(StrToInt(
ListViewKKLok.Items.Item[t].SubItems[5]) -1);
end;
end;
end;
LVLokFuellen;
EditKKLokID.Clear;
EditKKLokName.Clear;
EditKKLokAdresse.Clear;
EditKKLokTraeg.Clear;
EditKKLokBeschl.Clear;
EditKKLokVerzoeg.Clear;
EditKKLokID.SetFocus;
Check;
end;
Anschliessend musst Du nur noch den Inhalt des Arrays entweder neu in die LV eintragen, oder Du lässt es bleiben. Mit der Geschwindigkeit wirst Du da keine Probleme, behaupte ich jetzt einfach mal, also ich merke bei 200 Einträgen, jeder mit 6 SubItems überhaupt nichts.
Grüsse, Daniel