Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Checklistbox: Unselektierte Items löschen (https://www.delphipraxis.net/116430-checklistbox-unselektierte-items-loeschen.html)

Larsi 29. Jun 2008 10:59


Checklistbox: Unselektierte Items löschen
 
Hi,

mit folgendem Code kann man die selektieren Items in einer Checklistbox löschen:

Delphi-Quellcode:
Checklistbox1.DeleteSelected;

Aber wie kann man die Unselektierten Items löschen?


MFG Lars Wiltfang

DeddyH 29. Jun 2008 11:01

Re: Checklistbox: Unselektierte Items löschen
 
Geh doch in einer Schleife rückwärts durch die Items und lösche die nicht selektierten einzeln.

mkinzler 29. Jun 2008 11:03

Re: Checklistbox: Unselektierte Items löschen
 
Iteriere über die Items (rückwärts) und überprüfe, ob diese selektiert sind und lösche diese wenn nicht.

Larsi 29. Jun 2008 11:04

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von DeddyH
Geh doch in einer Schleife rückwärts durch die Items und lösche die nicht selektierten einzeln.

Und wie geht das?

mkinzler 29. Jun 2008 11:06

Re: Checklistbox: Unselektierte Items löschen
 
Du wirst doch wohl wissen, wie man eine Schleife programmiert? :gruebel:

haentschman 29. Jun 2008 11:06

Re: Checklistbox: Unselektierte Items löschen
 
Hallo Larsi...

Schuß aus der Hüfte:

- alle Listboxeinträge durchlaufen
- Überprüfung Checked
- entfernen ja/nein

:warn: nach dem Entfernen eines Listboxeintrages ist logischerweise die Anzahl um 1 weniger und der aktuelle Index ist eventuell auch anders.

:evil: roter Kasten...Laßt älteren die länger zum Schreiben brauchen auch eine Chance :mrgreen: ...aber trotzdem

DeddyH 29. Jun 2008 11:07

Re: Checklistbox: Unselektierte Items löschen
 
Pseudo-Code:
Delphi-Quellcode:
for i := CheckListBox.Items.Count - 1 downto 0 do
  if not Item.Selected(i) then
    Items.Delete(i);

Larsi 29. Jun 2008 11:07

Re: Checklistbox: Unselektierte Items löschen
 
@Mkinzler: Hab ich noch nie gemacht.

Die Muhkuh 29. Jun 2008 11:09

Re: Checklistbox: Unselektierte Items löschen
 
Du hast noch nie eine Schleife programmiert?

Dann wäre es an der Zeit, Grundlagen nachzuholen.

mkinzler 29. Jun 2008 11:09

Re: Checklistbox: Unselektierte Items löschen
 
Du bist seit über einem Jahr hier Mitglied und hast noch nie eine Schleife programmiert?

DeddyH 29. Jun 2008 11:10

Re: Checklistbox: Unselektierte Items löschen
 
Oder nur "If-Schleifen"?

Larsi 29. Jun 2008 11:11

Re: Checklistbox: Unselektierte Items löschen
 
Ich mache halt sonst andere Sachen in Delphi. Anstatt Schleifen benutze ich halt Repeat Until.

[DCC Fehler] Unit8.pas(42): E2003 Undefinierter Bezeichner: 'Item'


Dieser Fehler kommt wenn ch deinen Code verwenden will. Was muss ich da machen?


@Deddyh: If Schleifen natürlich schon. :)

haentschman 29. Jun 2008 11:11

Re: Checklistbox: Unselektierte Items löschen
 
:mrgreen: zu IF Schleife...

versuch mal: CheckListBox.Item.Selected(i)

DeddyH 29. Jun 2008 11:12

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von DeddyH
Pseudo-Code:

Du musst schon die richtige Syntax verwenden.

[edit]
Zitat:

Zitat von Larsi
Anstatt Schleifen benutze ich halt Repeat Until.

:wiejetzt: [/edit]

Die Muhkuh 29. Jun 2008 11:13

Re: Checklistbox: Unselektierte Items löschen
 
Du kannst auch Repeat-Until nutzen, anstatt eine For-Schleife.

DeddyH 29. Jun 2008 11:14

Re: Checklistbox: Unselektierte Items löschen
 
Damit wäre ich vorsichtig. Dann besser while nehmen.

Larsi 29. Jun 2008 11:16

Re: Checklistbox: Unselektierte Items löschen
 
Delphi-Quellcode:
for i := CheckListBox1.Items.Count - 1 downto 0 do
  if not CheckListBox1.Item.Selected(i) then
    Items.Delete(i);
So kommen immernoch Fehler:
[DCC Fehler] Unit8.pas(42): E2003 Undefinierter Bezeichner: 'Selected'
[DCC Fehler] Unit8.pas(43): E2003 Undefinierter Bezeichner: 'Items'
[DCC Fehler] Unit8.pas(43): E2008 Inkompatible Typen
[DCC Fehler] Unit8.pas(46): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'TCheckListBox' gefunden

mkinzler 29. Jun 2008 11:16

Re: Checklistbox: Unselektierte Items löschen
 
[klugscheiß]
Repeat..Until ist ja auch eine Schleife und auch While
[/klugscheiß]
Es müsste CheckBox1.Selected heißen.
Imho könnte ein Blick in die Hilfe/Klassenvervollständigung diesen Thread hier abkürzen

Die Muhkuh 29. Jun 2008 11:19

Re: Checklistbox: Unselektierte Items löschen
 
Du kannst mit der Repeat-Until Schleife auch rückwärts iterieren. Ob Du jetzt:

Delphi-Quellcode:
i := Items.Count - 1;

while (i >= 0) do
begin
  // Mach was
  Dec(I);
end;
hast, oder

Delphi-Quellcode:
i := Items.Count - 1;

repeat
  // Mach was
  Dec(I);
until i <= 0;
hast, kommt mehr oder weniger aufs Gleiche raus.

Ok, das einzige Problem ist, dass die Repeat auf jedenfall einmal durchlaufen wird.

Larsi, Du programmierst ja nicht seit gestern. Streng Dein Köpfchen ein bisschen an und werfe einen Blick in die Hilfe ;)

extrem 29. Jun 2008 11:36

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von Larsi
Delphi-Quellcode:
for i := CheckListBox1.Items.Count - 1 downto 0 do
  if not CheckListBox1.Item.Selected(i) then
    Items.Delete(i);
So kommen immernoch Fehler:
[DCC Fehler] Unit8.pas(42): E2003 Undefinierter Bezeichner: 'Selected'
[DCC Fehler] Unit8.pas(43): E2003 Undefinierter Bezeichner: 'Items'
[DCC Fehler] Unit8.pas(43): E2008 Inkompatible Typen
[DCC Fehler] Unit8.pas(46): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'TCheckListBox' gefunden

Hi,

so geht es aber bei mir:
Delphi-Quellcode:
  for i := CheckListBox1.Items.Count - 1 downto 0 do
    if not CheckListBox1.Selected[i] then
      CheckListBox1.Items.Delete(i);

DeddyH 29. Jun 2008 11:38

Re: Checklistbox: Unselektierte Items löschen
 
Da hätte er selbst drauf kommen sollen :? . Das war ja nun keine unlösbare Aufgabe.

mkinzler 29. Jun 2008 11:39

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von DeddyH
Da hätte er selbst drauf kommen sollen :? . Das war ja nun keine unlösbare Aufgabe.

Für ihn scheinbar schon. :(

Die Muhkuh 29. Jun 2008 11:42

Re: Checklistbox: Unselektierte Items löschen
 
Weil die Grundlagen der Schleifen dafür fehlten. Deswegen ist ja auch keine Schande, diese sich anzusehen :zwinker:

mkinzler 29. Jun 2008 11:43

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von Die Muhkuh
Weil die Grundlagen der Schleifen dafür fehlten. Deswegen ist ja auch keine Schande, diese sich anzusehen :zwinker:

Und die Fähigkeit(Lust?) sich selber die Eigenschaften/Methoden der Klasse anzuschauen

extrem 29. Jun 2008 11:53

Re: Checklistbox: Unselektierte Items löschen
 
@mkinzler Jetzt nicht gleich wieder mit Unterstellungen anfangen.

Hier gab es schon angeblich erfahrende Mitglieder, die beim Umgang mit der Hilfe auch ziemlich unbeholfen waren. Die haben da wohl auch nicht richtig durchgesehen.

mkinzler 29. Jun 2008 11:54

Re: Checklistbox: Unselektierte Items löschen
 
Zitat:

Zitat von extrem
@mkinzler Jetzt nicht gleich wieder mit Unterstellungen anfangen.

Hier gab es schon angeblich erfahrende Mitglieder, die beim Umgang mit der Hilfe auch ziemlich unbeholfen waren. Die haben da wohl auch nicht richtig durchgesehen.

Sorry, es auch zu viel verlangt das der Fragesteller sich bemüht.

DeddyH 29. Jun 2008 11:59

Re: Checklistbox: Unselektierte Items löschen
 
Könnten wir nun zum Topic zurückkehren (sofern noch nicht gelöst)?

Larsi 29. Jun 2008 12:10

Re: Checklistbox: Unselektierte Items löschen
 
Genau. Hat sich nämlich geklärt. Hab's übrigens selber hingekriegt :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 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