Entonces hay otra cosa que no estas haciendo correctamente. Yo te puedo asegurar, que esto funciona perfectamente:
Código Delphi
[-]
with UnAdoQuery do begin
if active then close;
SQL.Clear;
SQL.Add('Select Nombre');
SQL.Add('From Cliente');
SQL.Add('Where Clave = :Clave');
Parameters.ParamByName('Clave').Value := cmbClientes.KeyValue; Open;
Showmessage(FieldByName('Nombre').AsString);
end;
Prueba a hacer esto:
Showmessage(Proveedor.KeyValue);
para ver que valor te muestra.