In Delphi mode, like in Delphi, @proc evaluates to an untyped pointer. In ObjFPC mode, @proc is the same as "proc" in Delphi mode: it evaluates to a procvar type with the signature of the passed proc. To change that into an untyped pointer in ObjFPC mode, you have to add a pointer() typecast. However, this completely eliminates type checking, which is a bad idea.
The reason is that this only works in your program if updateButtonProc and updateTextfieldProc do not access local variables or parameters from updateBox. If they do, you have to change the declaration of TtuiProc to "TtuiProc = procedure is nested;". Even when they don't to this, it's better to use this correct type so you don't need the @-hack in Delphi mode to get rid of type checking, nor the pointer() hack in ObjFPC mode.