Esta es la forma que utilizo yo, espero les sirva
CargarCombo:
Donde el sql de query es algo del estilo: "select id, descripcion from tabla"
Código Delphi
[-]
Combo.Items.Clear;
while not query.eof do
begin
Combo.Items.AddObject(query.FindField('Descripcion').asString, TObject(query.FindField('Id').asInteger));
query.next;
end;
Esto lo que hace es guardar un objeto asociado al string del combo, ese objeto es el id
Luego, para saber que id se selecciono en el combo hago lo siguiente
Código Delphi
[-]
if Combo.ItemIndex=-1 then
begin
id:= integer(Combo.Items.Objects[Combo.ItemIndex]);
end;
Saludos
Pablo