2 2 Stimmen

Delphi/Lazarus: Markierte Items aus ListBox mit ENTF-Taste löschen

Tipp von Delphianer | 09.01.2016 um 18:47 Uhr

Heute möchte ich euch zeigen, wie ihr in Lazarus oder Delphi implementiert, dass eine TListBox auf die Entfernen-Taste (ENTF) reagiert und entsprechend alle markierten Einträge aus der Liste entfernt.

Wir weisen unserer ListBox dafür ein OnKeyDown-Event zu, in dem wir den folgenden Code verwenden:

procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState);
var
  i: integer;
begin
  if key = $2E then begin
    Listbox1.Items.BeginUpdate;

    for i := ListBox1.Items.Count - 1 downto 0 do begin
      if ListBox1.Selected[i] then ListBox1.Items.Delete(i);
    end;

    ListBox1.Items.EndUpdate;
  end;
end;

Die Variable "Key" enthält die gedrückte Taste. Da wir auf die Taste ENTF reagieren möchten, fragen wir zunächst ab, ob Key = $2E ist. $2E ist der virtuelle Keycode der ENTF-Taste.

Falls ja gehen wir alle Items der ListBox durch uns löschen diese, falls sie markiert sind (Selected[i] ist dann TRUE). Wichtig ist, dass wir die Einträge rückwärts durchlaufen (downto), da wir sonst unter Umständen auf nicht mehr existierende Einträge mit unserer Schleife zugreifen. Außerdem sollten wir BeginUpdate und EndUpdate benutzen, damit die ListBox nicht nach jeder Löschung neu gezeichnet werden muss.

AntwortenPositivNegativ

Über den Autor

Avatar AutorDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen | Nachricht

 

Ähnliche Themen

Wichtiger Hinweis

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.