Solution #3: that's exactly what I'd like to avoid, having to overwrite each and every control's OnMouseUp.I'm not sure what do you mean by overwrite here? OnFormCreate, with a recursively function, loop through form controls and assign a common OnMouseUp to each control you're interested in. This can be done selectively(only for buttons for example, or for a mixed type of controls tagged with a unique Tag). When OnMouseUp is fired just check the sender(tag, name) and take the appropriate action. I don't know what exactly are you trying to achieve but it shouldn't be to difficult with the above method.
I still don't like the approach, though you showed me some kind of automating it :-)You can make it fully automated. I mean if somebody creates a MouseDown event from the designer, you can redirect to this event after it was catched on the generic event.