According to your description, there may be many interactions between objects in the other units and yor class which we can't see. Can you attach the full project so that we can see what exactly are you doing and how?
Anyway, freeing your class shouldn't affect any external object
unless you're freeing them:
- through the internal reference) in your class destructor; -or-
- by changing their owners and freeing/destroying the new owner
Note also that after you free/destroy your class the pointers to the event handlers of the external objects now point to nowhere! You should revert the assignations you did in
SetImgZoom() in your destructor.