Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi ListBox1 oberstes Item (https://www.delphipraxis.net/205691-delphi-listbox1-oberstes-item.html)

l1ko 7. Okt 2020 09:29

Delphi ListBox1 oberstes Item
 
Hallo liebe Community,

ich habe eine warscheinlich ganz simple Frage aber ich bin noch sehr unerfahren mit Delphi deswegen frage ich euch :)

Meine Frage: Wie kann ich aus einer ListBox das Oberste Item auswählen und löschen? Mit meinem Code nimmt er nur das unterste.

Code:
procedure TForm1.Button6Click(Sender: TObject);

var
ID :integer;
FoundSelected:Boolean;

begin
 FoundSelected :=false;
 for ID:= ListBox1.Items.Count - 1 downto - 0 do
    begin
    if ListBox1.Selected[ID] then
      begin
      FoundSelected := true;
      ListBox1.Items.Delete(ID);
      end;
    end;
if not FoundSelected then ListBox1.Items.Delete(ListBox1.Items.Count-1);
end;
Ich danke schonmal im voraus :gruebel:

runningsoft 7. Okt 2020 09:38

AW: Delphi ListBox1 oberstes Item
 
Wenn du sowieso den obersten Eintrag löschen möchtest, einfach:

Delphi-Quellcode:
ListBox1.Items.Delete(0);

l1ko 7. Okt 2020 09:52

AW: Delphi ListBox1 oberstes Item
 
Danke das hat mir schon geholfen :thumb:
Zitat:

Zitat von runningsoft (Beitrag 1475006)
Wenn du sowieso den obersten Eintrag löschen möchtest, einfach:

Delphi-Quellcode:
ListBox1.Items.Delete(0);


himitsu 7. Okt 2020 09:58

AW: Delphi ListBox1 oberstes Item
 
Zitat:

Mit meinem Code nimmt er nur das unterste
Ist denn irgendwas selektiert?

Wenn nicht, dann macht der Code doch genau das, was er soll -> das letzte Löschen.
Wie man hier "letzten Index" (Count-1) gegen "ersten Index" (0) ersetzt, wurde ja schon genannt.

PS: Ich empfehle die Benutzung des Debuggers.
* Halpepunkt [F9] auf die erste Codezeile dieser Methode
* und dann mit F8 und/oder F7 schrittweise durch den Code gehen und schauen was der macht.



Können hier mehrere oder nur ein Item selektiert sein? (MultiSelect)
Wenn nur SingleSelect, dann geht es auch direkt. (ItemIndex ist der Index des Selectierten Fokusierten)
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin
  if ListBox1.ItemIndex >= 0 then
    ListBox1.Items.Delete(ListBox1.ItemIndex) // lösche Selektiertes
  else // wenn nichts Selektiert, dann
    ListBox1.Items.Delete(ListBox1.Items.Count-1); // lösche Letztes (oder Erstes, mit Index 0)
end;
PS: Die Benamung ist etwas "grauenhaft".
* "Button6" sagt nicht aus was es ist (irgendwas mit Delete oder Löschen Loeschen im Namen wäre angebracht)
* und "ID" ist hier kein Ident, sondern ein Index, also sollte es auch z.B.
Delphi-Quellcode:
i
oder
Delphi-Quellcode:
Index
heißen


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz