,关于ComboBox1被选后取同一记录的另一个值有关问题

求助,关于ComboBox1被选后取同一记录的另一个值问题
现有数据表如下:
------------------------------
【数据表】
   ID            NAME
   1             RED
   2             BLUE
   3             YELLOW
   5             GREEN
   6             BLACK
   7             WHITE
   ...           ...

ID可能不连贯。
以下代码能把表里数据读到ComboBox1
-----------------  
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
with AdoQuery1 do 
   begin 
    close; 
    sql.clear; 
    sql.add('select * from table'); 
    open; 
    combobox1.items.clear; 
    while not eof do 
    begin 
      combobox1.items.add(fieldbyname('NAME').asstring); 
      next; 
    end; 
end; 
end; 
---------------------------
选择字段为“NAME”,但我需要获取的是ID字段,请问如何解决???

------解决方案--------------------

....
  combobox1.AddItem('RED', TObject(id){1}); //添加数据
  ShowMessage('id:' + Pchar(combobox1.Items.Objects[0])); // 取ID
....

------解决方案--------------------
我一般这么做……不一定最好,但能解决。
定义一个全局或者本单元变量
var
  sl: TStringList;
然后在获取数据语句中这样写:
  sl.clear;
  combobox1.clear;
循环添加
  sl.add(fieldbyname('NAME').asstring + '=' + fieldbyname('ID').asstring);
  combobox1.items.add(fieldbyname('NAME').asstring);
用的时候就是:
  showmessage(sl.Values[combobox1.text]);