una forma para hacerlo con valores de tipo integer y un combo;
Código Delphi
[-]
var
Dataset : TDataset;
begin
....
....
....
combo.items.clear;
with Dataset do
while not eof do
begin
combo.items.add(fieldByName('nombre').asString);
combo.items.objects[combo.items.count-1] :=
Pointer(fieldByName('id').asInteger);
next;
end;
end;
cuando quieras recuperar el entero de la posicion 2 haces lo siguiente
Código Delphi
[-]
x:= Integer(combo.items.objects[2]);
Por cierto no necesariamente tiene que ser un TComboBox, cualquier derivado de TStrings (por ejemplo TStringList) tiene la propiedad objects.
para valores de otro tipo creas un TList (no confundir con ListBox) y haces que los objects apunten a los items del TList