Remove
updown.Assosiate := edit;
Either it is UpDown control changing the value, or you do by your custom code.
There is nothing good in having two contradicting masters for same issue. if you custom-tailored SetValue
then don't let the UpDown
's built-in functions step in the way.
And better use some ready spin-buttoned edits with native support for float numbers.
PS. You may wish to setup Edit.OnExit
so that it would parse user-typed text and adjust UpDown.Value
accordingly