44 Stimmen

Delphi/Lazarus: Mit ENTF-Taste markierte Einträge aus ListView löschen

Tipp von Delphianer | 04.10.2013 um 11:06

Wenn wir in Delphi oder Lazarus eine TListView mit einigen markierten Einträgen haben und die Taste "DEL" bzw. "ENTF" drücken, passiert zunächst einmal gar nichts.

Damit wir durch diese Taste alle markierten Einträge aus der ListView löschen können, müssen wir zunächst nämlich folgenden Code zum OnKeyDown Event der ListView hinzufügen:

procedure Tprog.ListView1KeyDown(Sender: TObject; var Key: Word; 
Shift: TShiftState);
var
  i: integer;
begin
  if key = $2E then begin
     ListView1.Items.BeginUpdate;
     for i := ListView1.Items.Count - 1 downto 0 do
       if ListView1.Items[i].Selected then ListView1.Items.Delete(i);
     ListView1.Items.EndUpdate;
  end;
end;

Zunächst schauen wir nach, welche Taste gedrückt wurde. Sollte die Entfernen-Taste (hat den Wert $2E) gerückt worden sein, müssen wir alle Einträge, die aktuell markiert (selected) sind löschen. 

Wichtig ist hier, dass wir die Einträge rückwärts (downto) durchgehen. Wir gehen schließlich alle Items der ListView nacheinander durch und wenn wir zu Beginn schon einige Einträge gelöscht haben, stimmen die Indices der Items überhaupt nicht mehr und wir bekommen eine Fehlermeldung.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.