The simplest way to make an adjustable constant current source is to use a voltage regulator in a suitable configuration: an example of what is needed is given in the LM317 datasheet. However, this design does not allow the current to be adjusted down to zero. The design given here gets around that limitation. Simply use two separate fixed voltage regulators with different output voltages to ensure that the opamp is always operated within its specification. The first voltage regulator provides 15V both as a power supply to the opamp and as a voltage reference for the voltage divider formed by R3-P1-R4. P1 is used to adjust the reference voltage that appears on the non-inverting input to the opamp (pin 3 of IC3). The opamp now adjusts via T1 the current at the output of the circuit (i.e., from the collector of T1 to ground) in such a way that the voltage at the emitter of T1 (the instantaneous voltage) is maintained equal to the voltage at the wiper of P1 (the reference voltage). For all this to work it is, of course, necessary that a load is connected at the output of the circuit, so that a current can flow to ground.
The voltage range offered by adjusting P1 is determined by the resistance in the voltage divider comprising R3-P1-R4. With the voltage on the wiper of P1 at a minimum the maximum possible output current flows: this maximum current, in turn, depends on the value of resistor R2. The values are shown to give an available current range of 0 mA to 100 mA with R2 = 100 Ω and a range of 0 mA to 30 mA with R2 = 330 Ω. The calculations are as follows: we need a voltage range at the wiper of P1 from 2 V or less (at maximum current, with 10 V or more across R2) to at least 12 V (at minimum current, with 0 V across R2). To enable you to achieve this range while still allowing for a small tolerance in the track resistance of the potentiometer, a value of 1.5 kΩ is used for R3 and R4, thus increasing the actual voltage range to 1.73 V to 13.27 V.
Since the circuit provides a constant output current rather than output voltage, the actual voltage at the output will naturally vary. As the output current I rises the voltage drop across R2 (I x R2) also rises and so the output voltage correspondingly falls.