Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

How Do Delete The Checked Items of a TCheckListBox

Posted on 1999-01-13
8
Medium Priority
?
295 Views
Last Modified: 2010-05-18
How To Check Which are the Checked Items and remove them
within my TListCheckBox
0
Comment
Question by:k6__
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 10

Expert Comment

by:viktornet
ID: 1356407
CheckListBox.Checked[CheckListBox.ItemIndex] := true;

-Viktor
--Ivanov
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 1356408
hi k6__,

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  i := 0;
  while i < checklistbox1.Items.Count -1 do
  begin
    If Checklistbox1.Checked[i] then
    begin
      Checklistbox1.Items.Delete(i);
      dec(i);
    end;
    inc(i);
  end;
end;

meikl
0
 
LVL 3

Expert Comment

by:philipleighs
ID: 1356409
of this:

var i: integer;
begin
  for i := CheckBox1.Items.Count - 1 downto 0 do
    if CheckBox1.Checked[i] then
      CheckBox1.Items.Delete(i);
end;
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 10

Expert Comment

by:viktornet
ID: 1356410
oh you asked to remove them if they are checked??

ok, then philip's solution would be the best...

for i := CheckBox.Items.Count - 1 downto 0 do
  if checkbox.checked[i] then
    checkbox.items.delete(i);

that would be the solution...
0
 
LVL 2

Author Comment

by:k6__
ID: 1356411
None of the solutions worked..

i got list out of bounds or it doesn't delete the last checked
item.. etc

any ideas ?
0
 
LVL 10

Accepted Solution

by:
viktornet earned 80 total points
ID: 1356412
OK, i tested it and here is what I got...

I've got a TCheckListBox and two buttons... under one of the button's OnClick() I've got this code to add the number from 1 to 10 in the listbox...

var
  i : integer;
begin
  for i := 1 to 10 do
    LB.Items.Add(IntToStr(i));
end;

then I might check a few of them or all of them and then I use this code in the second button's OnClick() so it deletes all the checked items...

var
  i : integer;
begin
  for i := LB.Items.Count - 1 downto 0 do
    if LB.Checked[i] then
      LB.Items.Delete(i);
end;

Everything works as it should...

If you didn't copy and paste the code you might have missed the COunt - 1 or you might have done it for i := 0 to List.Items.Count - 1 which will occur also in Out Of Bounds because if you have 10 items and delete 1 then there would not ba an item 10 when the FOR loop gets to there...

Try copying and pasting the code and everything should work fine....

we use DOWNTO and not TO in the for loop so it doesn't give OUt oF Bounds...

-Viktor
--Ivanov
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 1356413
hi k6__,

sorry a little mistake of my comment in the line

  while i < checklistbox1.Items.Count  - 1 do

should be

  while i < checklistbox1.Items.Count  do


procedure TForm1.Button1Click(Sender: TObject);
  var i : integer;
begin
  i := 0;
  while i < checklistbox1.Items.Count  do
  begin
    If Checklistbox1.Checked[i] then
    begin
      Checklistbox1.Items.Delete(i);
      dec(i);
    end;
    inc(i);
  end;
end;

Then its works perfectly

meikl

0
 
LVL 2

Author Comment

by:k6__
ID: 1356414
Yup =) Works !

Thanx

0

Featured Post

[Webinar] Cloud Security

In this webinar you will learn:

-Why existing firewall and DMZ architectures are not suited for securing cloud applications
-How to make your enterprise “Cloud Ready”, and fix your aging DMZ architecture
-How to transform your enterprise and become a Cloud Enabler

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question