AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Löschen einzelner Items einer ListBox

Ein Thema von Kratos · begonnen am 21. Okt 2019 · letzter Beitrag vom 24. Okt 2019
Antwort Antwort
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
239 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 10:18
Du benötigst ein Unterscheidungkriterium (manuell oder automatisch),
also beispielsweise beim Laden (Initialisieren) das Kriterium auf "0", beim Hinzufügen durch Button "1"...

Dazu könnte man entweder das Objekt des List-Items "mißbrauchen" oder besser gleich eine generische Liste der Einträge mit einer entsprechenden Property benutzen
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 10:38
Falls du nicht unbedingt einen Button benötigst, kannst du dir mal TCheckListBox ansehen. Vielleicht kannst du die ja für das gewünschte Verhalten anpassen.
Peter
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
52 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 13:58
Also ich hab mich zuerst an der Checklistbox probiert.
Ich hab es jetzt so hinbekommen, dass sich Items.ItemIndex < 5 nicht mehr löschen lassen. Allerdings lassen sich diese Items dennoch markieren. Wirklich zufrieden bin ich damit allerdings nicht.

@Billa
Ich programmiere noch nicht sehr lange delphi. Somit weiß ich leider nicht, was du mir sagen möchtest^^
Kannst du deine Aussage ein wenig mehr präzisieren, bitte?

Gruß
Kratos
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 14:11
Hi, wenn ich mich korrekt erinner, kann man einem Item auch noch eine Eigenschaft anheften.
Wenn das noch funktioniert wäre der Aufbau so in etwa
(für die Items die man löschen kann/darf/soll/etc)
Delphi-Quellcode:
// etwas addieren
ListBox1.Items.AddObject('Ein Item', TObject(True));
// etwas löschen per abfrage so in etwa:
if Boolean(ListBox1.Items.Objects[ListBox1.ItemIndex]) then
  begin
    ListBox1.Items.Objects[ListBox1.ItemIndex].Free;
    ListBox1.Items.Delete(ListBox1.ItemIndex);
  end;
Ungetestet da ich gerade kein wunderbares Delphi vor mir habe...
Falls es nicht klappt oder Dir nicht zusagt, einfach ignorieren.

Ps: Markiert werden kann erstmal immer, soweit ich weiß.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 14:29
Wenn du verhindern willst, dass die Items nicht ausgewählt werden können, kannst du im OnSelect folgendes machen:
Delphi-Quellcode:
  if (CheckListBox1.itemindex < 5) and (CheckListBox1.Selected[CheckListBox1.itemindex]) then
  begin
    CheckListBox1.Selected[CheckListBox1.itemindex] := False;
  end;
Wenn diese nicht gechecked sein dürfen, dann im OnClickCheck:
Delphi-Quellcode:
  if (CheckListBox1.itemindex < 5) and (CheckListBox1.Checked[CheckListBox1.itemindex]) then
  begin
    CheckListBox1.Checked[CheckListBox1.itemindex] := False;
  end;
Das Konzpt, von KodeZwerg würde ich vermutlich auch nehmen, aber ich weiß nicht, ob du meinen deinen Kenntnissen schon damit klar kommst.
Peter
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
52 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 14:57
@Jasocul
ich habe deinen Code an meinen angepasst und es funktioniert ersteinmal. Danke dir!
OnSelect gibt es bei mir nicht. Ich hab den dafür vorgesehenen Code bei OnClick reingehauen.
Wirklich zufrieden bin ich mit der Lösung allerdings nicht.

In einem anderen Thread wurde ich darauf hingewiesen, dass so ein Ausdruck, den KodeZwerg verwendet, "dirty" sei und ich sowas lieber nicht verwenden sollte. Da ging es auch um einen Ausdruck mit einem Boolean vor der Klammer...
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
52 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Löschen einzelner Items einer ListBox

  Alt 21. Okt 2019, 15:08
Wie wäre es mit der Idee:
Ich nehm eine ListBox mit 2 Spalten. Und mit Klick auf die zweite Spalte soll sich automatisch das jeweilige Item löschen?!
Eine ListBox mit mehreren Spalten habe ich schon einmal gebaut.^^

EDIT: Eine ListBox mit zwei Spalten fällt auch raus. Die zweite Spalte kann man leider nicht anklicken.

Geändert von Kratos (21. Okt 2019 um 15:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Löschen einzelner Items einer ListBox

  Alt 22. Okt 2019, 06:13
Wirklich zufrieden bin ich mit der Lösung allerdings nicht.
Wäre ich auch nicht.
Mir ging es eher um eine einfache Lösung für dein Problem.

In einem anderen Thread wurde ich darauf hingewiesen, dass so ein Ausdruck, den KodeZwerg verwendet, "dirty" sei und ich sowas lieber nicht verwenden sollte. Da ging es auch um einen Ausdruck mit einem Boolean vor der Klammer...
Nein, das würde ich so auch nicht machen. Aber mir ging es nicht um diese einzelne Zeile, sondern eher um das Konzept. Ich arbeite auch oft mit zusätzlichen Objekten für die Listen-Elemente, um z.B. weitere Informationen zu hinterlegen.
Das Visualisierungsproblem behebst du damit nicht, aber damit kann man in deinem Fall hinterlegen, welche Items gelöscht werden dürfen oder zu welcher Form die Informationen gehören, etc.

Wenn du dich vom Konstrukt verabschieden kannst, dass an jeder erlaubten Zeile ein Lösch-Button ist, könntest du einen einzelnen Button (z.B. neben oder unter der Listbox) definieren, der nur Enabled ist, wenn das Löschen für den Eintrag zulässig ist.
Ich nutze in in solchen Fällen gerne TActionList mit TAction-Einträgen. Wenn so ein Entrag mit dem Button verbunden ist, kannst du beim OnUpdate des TAction-Eintrags definieren, wann der Button erlaubt ist und wann nicht.
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz