![]() |
checklistbox.deleteselected funzt nicht
Ich habe ein trivales Problem:
Ein einfaches checklistbox1.items.add('1'); checklistbox1.items.add('2'); checklistbox1.items.add('3'); füllt die Listbox. Ich kann alles markieren. Multiselected scheint True zu sein. checklistbox1.DeleteSelected löscht nur einen markierten Eintrag statt alles. Was mache ich da falsch? Die Suche in der Hilfe und DP half mir auch nicht weiter. |
Re: checklistbox.deleteselected funzt nicht
Moin Go2EITS,
das kann ich für D7 Pro und TDE Win32 nicht bestätigen. Es funktioniert wie erwartet. Zitat:
Auch wenn ich das Deiner Beschreibung nach eigentlich nicht vermute: Verwechselst Du vielleicht Selected und Checked? |
Re: checklistbox.deleteselected funzt nicht
@Seehase
Danke für Deine Hilfe! Die in der Checklistbox selectierten Einträge sollen gelöscht werden. Da verwechsle ich mal nix. Hier mein Code:
Delphi-Quellcode:
Ich habe es nochmals probiert.
procedure TForm1.Button2Click(Sender: TObject);
begin chklst1.items.Add('1'); chklst1.items.Add('2'); chklst1.items.Add('3'); end; procedure TForm1.button1Click(Sender: TObject); begin chklst1.DeleteSelected; end; Der Code löscht nur einen Eintrag. Den unteren. Ich werfe nun cnwizzard raus. |
Re: checklistbox.deleteselected funzt nicht
Ich wundere mich auch: Multiselected wird trotz intensiver Suche von mir nicht gefunden.
Weder unter D7 noch unter BDS2006 Win32. Ich verwende eine TChecklistbox. Cnwizzard und delphispeedup deinstalliert. Gleiches Problem. Irgendetwas mache ich falsch. Oha, ich sehe gerade, wenn ich eine anderen Eintrag makiere, und deleleteselected aufrufe wird der betreffende Eintrag gelöscht.Ich möchte, ich glaube da liegt mein Missverständnis, die Eintragungen mit Hacken löschen. Und dass scheint eine andere Eigenschaft zu sein, oder? Ein deletechecked konnte ich nicht finden. Und clearselection löscht nur die makierten Einträge lt. der Hilfe. Funzt bei mir auch nicht. :gruebel: :gruebel: :gruebel: Da habe ich wol ein generelles Verständnisproblem. |
Re: checklistbox.deleteselected funzt nicht
Na ja, da beibt mir wohl nichts anderes als meine gerade gefundene Notlösung zu nehmen:
Delphi-Quellcode:
Dies geht. Aber es gibt doch sicherlich für die gewählten, mit Hacken versehen Einträge, eine andere Lösung, oder?
for i:=checklistbox1.count-1 downto 0 do
begin if checklistbox1.Checked[i]=true then checklistbox1.items.Delete(i); end; Beste Grüße an die DP. Go2EITS |
Re: checklistbox.deleteselected funzt nicht
Moin Go2EITS,
was das MultiSelect angeht: Nicht alles steht im Objektinspektor. ;-) Die CheckedListBox kennt diese Eigenschaft. Zitat:
Ausgewählt/farbig hinterlegt: => Selected |
Re: checklistbox.deleteselected funzt nicht
Ein Vorschlag damit es bei langen Liste nicht so lange dauert:
Delphi-Quellcode:
CheckListBox1.Items.BeginUpdate;
Try For i := Pred(checklistbox1.Count) DownTo 0 Do If checklistbox1.Checked[i] Then Checklistbox1.items.Delete(i); Finally CheckListBox1.Items.EndUpdate; End; |
Re: checklistbox.deleteselected funzt nicht
Moin Seehase!
Zitat:
Zitat:
@Muetze1: Klingt theatralisch, ist aber frei nach "Apocalypse Now": Ich liebe erfrischenden Code am Morgen.
Delphi-Quellcode:
Den Code habe ich sogleich gleich mal übernommen! Danke! :thumb:
CheckListBox1.Items.BeginUpdate;
Try For i := Pred(checklistbox1.Count) DownTo 0 Do If checklistbox1.Checked[i] Then Checklistbox1.items.Delete(i); Finally CheckListBox1.Items.EndUpdate; End; Beste Grüße Go2EITS |
Re: checklistbox.deleteselected funzt nicht
Hallo zusammen,
also mit der CheckListBox habe ich so meine Probleme. Wie im Beitrag geschrieben - bei der CheckListBox gebe es auch ein MultiSelect - kann ich nicht bestätigen. Wenn damit gemeint ist, daß ich sowohl ein Checked wie auch Selected ausführen kann, dann fängt da mein Problem schon an. Ich möchte z.B. eine farbliche Hinterlegung in meiner CheckListBox haben aber nur dann, wenn auch ein Haken gesetzt ist und nur bei den angehakten. Auch möchte ich eine Möglichkeit haben, daß nur ein Haken gesetzt werden kann, also vergleichbar mit MultiSelect := false in der ListBox. Hat denn dafür jemand eine Lösung? Das Beispiel in diesem Beitrag habe ich etwas umgeändert und dachte mir damit zu helfen: Altes Beispiel: Mein Beispiel: CheckListBox1.Items.BeginUpdate; CheckListBox1.Items.BeginUpdate; Try For i := Pred(checklistbox1.Count) DownTo 0 Do For i := Pred(checklistbox1.Items.Count) DownTo 0 Do If checklistbox1.Checked[i] Then If checklistbox1.Checked[i] Then Checklistbox1.items.Delete(i); Checklistbox1.Selected[i] := false; Finally Finally CheckListBox1.Items.EndUpdate; CheckListBox1.Items.EndUpdate; End; End; Bei meinem Beispiel knalle ich aber raus 'Index überschreitet das Maximum von (n)' Gruß Christoph |
Re: checklistbox.deleteselected funzt nicht
Hoppla,
der hat mir alle Blanks weggeschmissen, hier noch mal mein Beispiel: [delphi] CheckListBox1.Items.BeginUpdate; Try For i := Pred(checklistbox1.Items.Count) DownTo 0 Do If checklistbox1.Checked[i] Then Checklistbox1.items.Selected[i] := false; Finally CheckListBox1.Items.EndUpdate; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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 by Thomas Breitkreuz