如何把CheckListBox中的打对号的项(即选中的项)删除。不是一个项被选中,是多选。请大家帮忙,我实在搞不定了。
解决方案 »
- 有关jpg加入数据的问题
- 我记得可以用API时间FORM颜色渐变地效果,不知道谁知道,谢谢
- 营救大兵LAIWEI791
- 请问我用opendialog返回的filename怎么都是乱码?
- 怎么可以和那个条形码输入设备相联系来采入数据?
- 请问:delphi有自带的做setup.exe(打包)吗?
- 如何让delphi做的程序在没有安装delphi的环境下运行?
- 如何使maskedit获得焦点时,光标在最左面?
- 如何获取Windows当前剪切板内容的数据结构,以及如何向剪切板写数据。望解答!
- 如何得到当前的记录位置?
- 菜鸟问题,读取缓冲区的内容!急!!!!
- 当客户端起过一定数量时,提示出错, 增加一个客户端,中间层的主窗体的Create事件会执行吗?
begin
with CheckListBox1 do
begin
for i := Items.Count -1 downto 0 do
begin
ItemIndex := i;
if Checked[i] then begin
DeleteSelected;
end;
end;
end;
end;
先判断index
删除点击的项
i:integer;
begin
for i:=CheckListBox1.Items.Count-1 downto 0 do
begin
if (CheckListBox1.State[i]=cbChecked) then
CheckListBox1.Items.Delete(i);
end;
end;
CheckListBox1.Items.Delete(i);这个为什么不能用于在循环中删除。还有,为什么用
for i := Items.Count -1 downto 0 do 而不能用for i := 0 to Items.Count -1 do
但是为什么downto可以而to不可以呢?
一个从大到小,to反之
作用is equal
你试一下,是不是相等。
i:integer;
begin
for i:=0 to CheckListBox1.Count-1 do
begin
if (CheckListBox1.Checked[i]) then
CheckListBox1.Items.Delete(i);
end;
end;//为什么这样通不过。
idilent(说错了别怪我) ( ) 的方法确实对,但我想弄明白为什么downto可以而to不可以呢?
因为没次删除选择的items后,CheckListBox1.Items.Count就会自动-1,但循环中的CheckListBox1.Items.Count次数不会变,所以到后后面会找不到items.
很简单一个例子,加入原有5个items,删除一个后,只剩下4个了,所以当你要判断的五个items时会出错。如果用downto就不会有这个问题,因为是到过来反找