I dont like the idea to intermingle things. There I have my panel definitions with assigned functions for the game and there I have my GUI manager and there would be the "drag" manager which will be called each frame by my GUI system.

So I simply want to write into the init function of my GUI system drag_register(panel); and I'm ready. The idea of groups is a bit bigger: in window forms you've got usually the title bar to move around a window. So _I_ would register all panels belonging to a window (title bar, icons un the upper right resize panel, subelements like lists, checkboxes, whatever) into one window group ("all items belong to window Nr. X").
So, I would register then the title bar as drag source and if I move the title bar x=+10,y=+20 to the lower right corner, all group elements move the same. So I would register several panels first as a group and THEN I register one panel as drag panel.. all by function calls, because it could be that I want own functions inside buttons or on on_click