The NumbersOnly property is Widgetset dependant, you can see on the "Restricted" tab in the onbejct inspecotr that is not implemented for all widgetsets.
It was added because Delphi has it.
And in Delphi it behaves like in Lazarus for Windows.
It is the widgetset (win32/win64) that enforces this behaviour, not our code, it is just a binding.
And, as one might expect, the implementation by MS is a bit odd, to say the least.
As wp said: the behaviour that MS introduced is pretty useless.
And, yes we could implement this in KeyPress, but we would also have to forbid pasting non-numbers into the edit.
That is a PITA to do (see TMaskEdit if you are interested to what kind of mess that leads).
If the WS doesn't support it, we (the Lazarus team) are not going to implement it.
At least, that the common opinion ATM.
Bart