Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   checklistbox.deleteselected funzt nicht (https://www.delphipraxis.net/78349-checklistbox-deleteselected-funzt-nicht.html)

Go2EITS 3. Okt 2006 16:49


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.

Christian Seehase 3. Okt 2006 17:34

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:

Zitat von Go2EITS
Multiselected scheint True zu sein.

das Mulitselect standardmässig false ist müsstest Du es schon gezielt aktiviert haben.

Auch wenn ich das Deiner Beschreibung nach eigentlich nicht vermute:
Verwechselst Du vielleicht Selected und Checked?

Go2EITS 3. Okt 2006 18:15

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:
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;
Ich habe es nochmals probiert.
Der Code löscht nur einen Eintrag. Den unteren.

Ich werfe nun cnwizzard raus.

Go2EITS 3. Okt 2006 18:39

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.

Go2EITS 3. Okt 2006 20:09

Re: checklistbox.deleteselected funzt nicht
 
Na ja, da beibt mir wohl nichts anderes als meine gerade gefundene Notlösung zu nehmen:

Delphi-Quellcode:
for i:=checklistbox1.count-1 downto 0 do
  begin
   if checklistbox1.Checked[i]=true then
    checklistbox1.items.Delete(i);
  end;
Dies geht. Aber es gibt doch sicherlich für die gewählten, mit Hacken versehen Einträge, eine andere Lösung, oder?

Beste Grüße an die DP.
Go2EITS

Christian Seehase 3. Okt 2006 23:23

Re: checklistbox.deleteselected funzt nicht
 
Moin Go2EITS,

was das MultiSelect angeht:
Nicht alles steht im Objektinspektor. ;-)

Die CheckedListBox kennt diese Eigenschaft.

Zitat:

Zitat von Go2EITS
ich glaube da liegt mein Missverständnis, die Eintragungen mit Hacken löschen.

Haken dran => Checked
Ausgewählt/farbig hinterlegt: => Selected

Muetze1 3. Okt 2006 23:45

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;

Go2EITS 4. Okt 2006 06:29

Re: checklistbox.deleteselected funzt nicht
 
Moin Seehase!
Zitat:

Nicht alles steht im Objektinspektor.
Das wusste ich nicht!
Zitat:

Haken dran => Checked
Ausgewählt/farbig hinterlegt: => Selected
Ja, das habe ich dann auch ge"checked".

@Muetze1:
Klingt theatralisch, ist aber frei nach "Apocalypse Now": Ich liebe erfrischenden Code am Morgen.
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;
Den Code habe ich sogleich gleich mal übernommen! Danke! :thumb:
Beste Grüße
Go2EITS

Christoph Frank 24. Mär 2007 13:53

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

Christoph Frank 24. Mär 2007 13:57

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 16:43 Uhr.
Seite 1 von 2  1 2      

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