It's been a while since I wrote that code.
But NullValue etc. are only supposed to come into play when you clear the control (and then leave it).
Explanation: this control initially was intended to replace the standard TSpinEdit's in the IDE's anchor editor, but that never happened.
Notice that a TSpinEdit cannot have an empty text (when you leave the control), but TSpinEditEx can.
If you clear the Text and then query Value, then, if NullValueBehaviour is set to nvbShowTextHint, it will return NullValue.
Notice that NullValue is allowed to be greater than MaxValue or less then MinValue.
So: if you set Value to NullValue, either by code, or by typing the text or using the spinners, the actual value is supposed to be in the control.
In your case, where NullValue = 0, it must show '0' in the control.
This is both at designtime and at runtime.
So, the previous fix I made is wrong.
After the window is initialized, the control's text is empty.
It then calls UpdateControl, causing the the NullValueBehaviour to take effect.
This should not happen (see explanation above).
It should simply show '0'.
I fixed that in
commit a3ba11e5.
Bart