如何删除combobox中的某个item???(50分)

  • 主题发起人 主题发起人 maginnn
  • 开始时间 开始时间
M

maginnn

Unregistered / Unconfirmed
GUEST, unregistred user!
如何删除combobox中的某个item??
两个combobox有相同的itmes下拉内容
当combobox1选定后
如何去掉combobox2中combobox1.text对应的items???
 
在ITEMSLIST中删除就行了
 
just like this:
if ComboBox1.ItemIndex >= 0 then
begin
I := ComboBox2.Items.IndexOf(ComboBox1.Items[ComboBox1.ItemIndex]);
if I >= 0 then ComboBox2.Items.Delete(I);
end;
 
ComboBox1.Items.Delete(index)
 
lichengbin已经给出了正确答案。
 
用tempmen的方法就可以。如有穎問請繼提。。
 
不可以的,要是combobox1,第一次选择了一个,
这时候,combobox2中的item已经减去了一个
但是combobox1,选错了重新选一个的时候,combobox2,又减去一个
这样combobox2,少了!!!!!!!!!
 
但是combobox1,选错了重新选一个的时候???????
看不懂?
你将lichengbin的答案放在一个按钮里,到你认为选对时,再去点那个按钮还不中???
 
combobox1 中有1,2
combobox2中有1,2,3,4,5,6,7
开始combobox1选择了1:在onchange中触发删除combobox2中对应的内容
这时候combobo2下拉中只用了2,3,4,5,6,7
可是我想重新选择combobox1
combobox1选择了2 在onchange中触发删除了combobox2中的对应的2
现在combobox剩下了3,4,5,6,7
可是少了1,
不能不让用户修改他的选择阿??
 
app2001不是已经回答了你的顾虑了吗?不要在onchange中触发,用一个按钮,“到你认为选对时,再去点那个按钮”,不可能不行吧?按你的想法肯定不行的。
 
可以在onexit或者onclick中出发这些时间,如果是数据库中的数据的话,可以尝试combobox2.clear后在加上去,这样就又有速度的问题
我建议你不必删掉combobox2中的item,在某个地方判断以下就可以了
procedure checkinput;
begin
if combobox1.text = combobox2.text then
//可以判断itemindex,tag之类的东西
begin
showmessage('error') ;
exit;
end;
end;
 
那也太不方便了吧,不仅用户不愿意,老板更不干阿!!
 
我把你的意思理解为只能删除一个项目,删错了,选另外的也要保证Combobox2中只被删除一个项目,如果是这样的话那就试试我的办法吧:
...................
var
Form1: TForm1;
str0:string;
pos0:integer;

implementation

procedure TForm1.ComboBox1Click(Sender: TObject);
var
i:integer;
begin
I := ComboBox2.Items.IndexOf(ComboBox1.Items[ComboBox1.ItemIndex]);
if I >= 0 then begin
if str0<>'' then begin
combobox2.Items.Insert(pos0,str0);
I := ComboBox2.Items.IndexOf(ComboBox1.Items[ComboBox1.ItemIndex]);
end;
str0:=ComboBox2.Items;
pos0:=i;
ComboBox2.Items.Delete(I);
end else
str0:='';
end;
 
后退
顶部