老兄:
想想,
你的LISTBOX2在删除后还能不能同LISTBOX1一一对应呢?
所以只能这样:
比较ITEM的内容相同再删除就对了! for i:=0 to (ListForm.ListBox1.Count-1) do
begin
if ListBox1.Selected[i] then
count1:=i;
for j:=0 to (ListForm.ListBox2.Count-1) do
begin
if listbox2.items[j]=listbox1.items[i]
ListForm.ListBox2.Items.Delete(j);
end
end;
想想,
你的LISTBOX2在删除后还能不能同LISTBOX1一一对应呢?
所以只能这样:
比较ITEM的内容相同再删除就对了! for i:=0 to (ListForm.ListBox1.Count-1) do
begin
if ListBox1.Selected[i] then
count1:=i;
for j:=0 to (ListForm.ListBox2.Count-1) do
begin
if listbox2.items[j]=listbox1.items[i]
ListForm.ListBox2.Items.Delete(j);
end
end;
解决方案 »
- Delphi 分割系统桌面屏幕的显示区域?(100分悬赏!!!)
- 求:<<Inside VCL深入核心VCL架构剖析>>,<<代码大全>>{*清晰电子版*}
- intraweb 下的TIWRegion容器的enabled := false无法让其中的控件不可用,如何设置
- 怎么才能将内存中byte数组读取到十六进制文本
- 如何一条一条将数据插入listview控件中去 寻求代码 在线等待 分数立给
- 请问如何解决下面的问题(关于DbGrid的)
- 使用FTP的Download函数出现内存错误?
- 兄弟们看看下面的笔记本报价,便宜的让你受不了。说说看法吧。
- 关于Delphi6的问题?
- 请推荐一种除五笔之外的目前最快的最方便键盘中文输入法!!
- 如何获得一个程序中的Edit控件的handle,再向这个Edit输入和导出内容?
- 哪有DELPHI的前缀规则
for i:=0 to (ListForm.ListBox1.Count-1) do
begin
if ListBox1.Selected[i] then
begin
count1:=i;
for j:=0 to (ListForm.ListBox2.Count-1) do
begin
if listbox2.items[j]=listbox1.items[i]
ListForm.ListBox2.Items.Delete(j);
end;
end;
end;
成为第4项,那么等下一个循环到第5项的情况就会是该项没有选中(因为全部上移、现在
的第5项是原来的第6项),你使用DownTo应该就可以解决问题了:
for i:=(ListForm.ListBox1.Count-1) downto 0 do
...
for I := listbox1.items.count -1 downto 0 do
begin
if listbox1.selected[i] then
begin
listbox1.items.delete(i);
listbox2.items.delete(i);
end;
end;
begin
if ListBox1.Selected[i] then
ListForm.ListBox1.Items.Delete(i);
ListForm.ListBox2.Items.Delete(i);
end;