我的软件实现对项目信息的增删改,一个窗口中有20几条项目的信息,有些信息,比如党派,有专门的党派编码表,原来如果是群众,那项目表中存的编号就是01,如果改成中国共产党,项目表中存的编号就是02.现在问题是修改时,我原想用一个下拉列表,把党派编码表中的都列出来供选择,问题是更新数据库时,怎么实现把项目中党派更新成修改后的党派对应的编号,感觉实现起来这么困难,有什么实现方法?
用其他控件也可以

解决方案 »

  1.   

    在下拉列表的onchange事件里重新加载一下就可以了
    从数据库里面读入你想要的数据,再重新加上去,记得要先把下拉列表里面的数据删了
      

  2.   

    在读数据到combobox的时候,做一个数组,下标就是combobox.itemindex,内容就是党派编号
    这样选择的时候党派编号就是你的array[combobox.itemindex]
      

  3.   

    本帖最后由 bdmh 于 2009-08-19 16:53:28 编辑
      

  4.   

    添加Objectvar
      str:string;
    begin
      str := '党派编码';
      ComboBox1.Items.AddObject('党派',TObject(str));
    end;读的时候就是ComboBox1.Items.Objects[0]  str := StrPas(PChar(ComboBox1.Items.Objects[0]));
      ShowMessage(str);
      

  5.   

    如果是在数据集上操作的话,建议你直接使用lookup字段。
    另外,最好去找一些第三方的控件,这种东西很多的,devexpress的就不错。
      

  6.   


    上面得到ComboBox1选中的项的objects有点问题
      

  7.   

    是不是因为我的编号是varchar类型的原因,我先把编号转成integer类型
    ComboBox1.Items.AddObject(ADOQuery1.FieldByName('f_mc').AsString,TObject(StrToInt(ADOQuery1.FieldByName('f_bh').AsString)));然后取的时候
    Edit1.Text:=inttostr(integer(ComboBox1.Items.Objects[ComBobox1.ItemIndex]));
    就没事了
    好像很麻烦,应该怎么做呢
      

  8.   

    如果string的话不乱码纯属运气,string的局部变量生存期一过生动就销毁了
    4楼那以为正常是因为用了个常量字符串不会被销毁
      

  9.   


    因为定义的字符变量为局部变量,当离开其所在过程后,再次读取object的内容时,就会有问题了
    你最好建立一个类或者record,里面包含你所要的信息,然后讲类或record的指针存入object,这样你可以保存很丰富的信息
      

  10.   

    把代码都存到一个对象列表里,每个代码是一个对象,combobox里的object指向这些对象就好了,这个比较正规
    或者如果代码存在于列表里,combobox的object里存index