You can't modify the procedure declaration.
The caller will always sent all parameters.
If you remove some, then the parameters are still in the memory (or CPU registers). So if you remove "Button", then the value that is sent for "Button" ends up in "X, y". And that obviously wont be the expected value.
Procedure/Functions used in events (set by the form designer / object inspector) are not checked for having the correct param list. They are created once for you. If you change them, then things fail. (and may even crash).