Code: Alles auswählen
idx := GetArtikelIndex;
if idx < 0 then // idx hat den richtigen Wert
exit;
A := ArtikelListe[idx];
// A hat den richtigen Inhalt
// wenn die folgende Zeile ausgeklammert ist, funktioniert es wie gewünscht !
if MessageDlg('Diesen Artikel wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
// hier hat A einen anderen Inhalt --- Warum?
// Anm. A hat nun den Inhalt des letzten Artikels in der Artikelliste.
ArtikelListe.DeleteByID(A.ID);
ArtikelListe.Delete(idx); // idx noch immer richtig !
dgArtikel.RowCount := dgArtikel.RowCount - 1;
if idx >= ArtikelListe.Count then
idx := ArtikelListe.Count - 1;
dgArtikel.Row := dgArtikel.FixedRows + idx;
dgArtikel.Invalidate;
end;
Ist dies irgendwie erklärbar?