srod wrote:I prefer to create simple OOP classes which then places the emphasis on the app developer to issue the relevant \Destroy() method calls etc. to explicitly delete the control. Makes for tighter code inmo.

Same here!
Except for a few lines of mainline code, our applications exist as a hierarchy of PB classes. Each object tracks the child objects attached to it, and the housekeeping is handled automatically within the individual classes.
As you say, the application code is a lot tighter, and it's certainly a lot easier to write and maintain.
For example, here's the code for destroying a PanelItem and all its associated gadgets, files, reports, etc:
That's all that need be coded. No events. No messy housekeeping.

For ten years Caesar ruled with an iron hand, then with a wooden foot, and finally with a piece of string.
~ Spike Milligan