我只知道ComboBox1.Items.Add()是增加一项
但是我想实现动态减少一项,有没有使其中一项去掉的函数啊?例如我的ComboBox3动态加载了数据库某一字段的记录值,我想用Edit40去修改某个记录值,点Button9以后实现修改功能,并使ComboBox1减去原来的要被修改的那个值而换成修改后的值。可是我不会移去ComboBox1里的某一项也。
下面是我写的代码,没有错误,就是修改了商品种类的父类名称后没能在ComboBox3里更新。procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin
with DataModule3.productTypeADO do
//在下拉框显示数据库中的商品种类的父类名称
begin
Active := False;
SQL.Clear;
SQL.Add('select distinct ParentType from ProductType');
Open;
for i :=0 to RecordCount-1 do
  begin
    ComboBox3.Items.Add(Fields.Fields[0].AsString);
   Next;
  end;
  close;
end;
end;procedure TForm1.Button9Click(Sender: TObject);
//修改商品父类名称
begin
with DataModule3.productTypeADO do
begin
Active := False;
SQL.Clear;
SQL.Add('Update ProductType SET ParentType='''+Edit40.Text+''' where ParentType='''+ComboBox3.Text+'''');
Execsql;
ComboBox3.Text:=Edit40.Text;
end;
end;我希望修改父类名称后能马上在ComboBox3下拉列表中显示新修改的值,去掉被修改的值。

解决方案 »

  1.   

    那你在修改完后再调用一次 formshow嘛..
    [code=Delphi(Pascal)]
    procedure TForm1.FormShow(Sender: TObject); 
    var 
       i:integer; 
    begin 
       with DataModule3.productTypeADO do    //在下拉框显示数据库中的商品种类的父类名称   
       begin 
         close; 
         sql.clear; 
         sql.add('select distinct ParentType from ProductType'); 
         Open; 
       for i :=0 to RecordCount-1 do 
       begin 
         ComboBox3.Items.Add(Fields.Fields[0].AsString); 
         Next; 
       end; 
       end;
       combobox3.ItemIndex:=0;
    end; 
    procedure TForm1.Button9Click(Sender: TObject);  //修改商品父类名称
    begin 
       with DataModule3.productTypeADO do 
       begin 
         close; 
         sql.Clear; 
         sql.add('Update ProductType SET ParentType=:newType where ParentType=:oldType); 
         parameters.ParamByName('newType').Value:=trim(edit40.text);
         parameters.ParamByName('oldType').Value:=trim(combobox3.text);    
         Execsql;    
       end;
       combobox3.Clear;  //先清空
        edit40.clear;
       Formshow(sender); //再次执行刷新 
    end; 
      

  2.   

    index:=combobox.indexof(修改前的值);
    combobox.delete(index);
    combobox.add(修改后的值);