我的代码如下,做了一下不成功。procedure TgoodsForm.DBGrid1CellClick(Column: TColumn);
var
 i:integer;
begin
  Edit2.Text:=DBGrid1.Columns[0].Field.Value;
  Edit3.Text:=DBGrid1.Columns[1].Field.Value;
  Edit4.Text:=DBGrid1.Columns[2].Field.Value;
  Edit5.Text:=DBGrid1.Columns[3].Field.Value;
  for i:=0 to TntComboBox1.Items.Count do
  begin
    if(DBGrid1.Columns[4].Field.Value=string(TntComboBox1.Items.Objects[TntComboBox1.Items[i]])) then
    begin
       TntComboBox1.ItemIndex:=i;
    end;
  end;
  Memo1.Lines.Text:=DBGrid1.Columns[5].Field.Value;
end;请教高手,我如何实现?谢谢

解决方案 »

  1.   

    假设字段的值为FieldValue,那么TntComboBox1.ItemIndex := TntComboBox1.Items.IndexOf(FieldValue);
      

  2.   

    具体到你的代码,就是一句话TntComboBox1.ItemIndex := TntComboBox1.Items.IndexOf(DBGrid1.Columns[4].Field.Value);
      

  3.   

    FieldValue的值与TntComboBox1里前的前4位值相等
      

  4.   

    TntComboBox1.ItemIndex := TntComboBox1.Items.IndexOf(DBGrid1.Columns[4].Field.Value);
    顶了 
      

  5.   

    TntComboBox1.Items.IndexOf(DBGrid1.Columns[4].Field.Value) 总是-1
      

  6.   

    TntComboBox1里的值是:
    S001-abc
    S002-abcdef
    S003-abcdefg
    ...
    S00n-xyz
    之类的值我后面简化成
    S001
    S002
    S003
    ...
    S00n
    TntComboBox1.Items.IndexOf(DBGrid1.Columns[4].Field.Value) 也总是-1
      

  7.   

    哦,在加了Trim后就可以了。
    TntComboBox1.Items.IndexOf(Trim(DBGrid1.Columns[4].Field.Value))
    但对于
    S001-abc 
    S002-abcdef 
    S003-abcdefg 
    ... 
    S00n-xyz 
    之类的值怎么弄?
      

  8.   

    你先看看你的DBGrid1.Columns[4].Field.Value这里的值是什么
      

  9.   

    用dbcombobox不就可以了,还不用写代码
      

  10.   

    忘了说明了,抱歉,DBGrid1.Columns[4].Field.Value是如S001或S002等等S00n样的字符
    而TntComboBox1.Items是
    S001-abc 
    S002-abcdef 
    S003-abcdefg 
    ... 
    S00n-xyz 
    之类的值
      

  11.   

    如果TntComboBox1.Items是 
    S001
    S002
    S003
    ... 
    S00n之类的值就可以