Home » Tipps & Tricks » Komponenten » TListBox/TComboBox » Einträge in einer Listbox markieren

Einträge in einer Listbox markieren

Zunächst muss man unterscheiden, ob man einen oder mehrere Einträge selektieren möchte. Möchte man nur einen Eintrag markieren genügt es der Eigenschaft ItemIndex den Index zu übergeben (Zählung beginnt bei 0):

procedure TForm1.Button2Click(Sender: TObject);
begin
  Listbox1.ItemIndex:=2;
end;

Soll die Markierung aufgehoben werden, wird dieser Eigenschaft -1 zugewiesen. Durch Auslesen dieser Eigenschaft kann der selektierte Eintrag ermittelt werden.Möchten Sie mehrere Einträge markieren müssen Sie zunächst die Eigenschaft MultiSelect auf True stellen. Über die Eigenschaft Selected kann nun festgestellt werden, ob ein Eintrag selektiert oder nicht selektiert ist. Die Eigenschaft funktioniert lesend, sowie schreibend:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Listbox1.MultiSelect:=True;

  if Listbox1.Items.Count>5 then
  begin
    Listbox1.Selected[1]:=True;
    Listbox1.Selected[3]:=True;
    Listbox1.Selected[5]:=True;
  end;
end;

Als Index muss die Index-Nummer des Items übergeben werden. Wird versucht auf ein nicht vorhandenes Items zuzugreifen, kommt es zu einer Exception.Beachten Sie, dass ItemIndex nur funktioniert, wenn die Eigenschaft MultiSelect auf False steht. Andersum funktioniert der Zugriff über Selected nur, wenn MultiSelect auf True steht.In der Praxis kommt es häufig vor, dass aus einer Listbox alle markierten Items gelöscht werden sollen. Gehen Sie dabei die Liste von hinten nach vorne durch, weil sonst auf Items zugegriffen wird, die möglicherweise schon nicht mehr vorhanden sind:

procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  for I:=Listbox1.Items.Count-1 downto 0 do
  begin
    if Listbox1.Selected[I] then
     Listbox1.Items.Delete(I);
  end;
end;

Des Weiteren lassen sich über die Eigenschaft SelCount die Anzahl der selektierten Einträge ermitteln. Diese Eigenschaft steht ständig auf -1, falls MultiSelect auf False steht. Weitere Informationen zu den Möglichkeiten des Selektierens seitens des Anwenders finden Sie in der Onlinehilfe unter dem Stichwort „TCustomListBox,ExtendedSelect“.