Eigentlich ganz einfach. Beiliegendes Beispiel hat allerdings einen Nachteil. Im Designmodus wird es nicht richtig funktionieren, wenn Du zwei Forms öffnest, wo die Komponente draufliegt (und diese nicht zur gleichen App gehören). Ansonsten müsste es eigentlich gehen. Der Trick besteht darin sich in einer privaten globalen
Unit-Variablen zu merken, wie oft die Komponente erstellt wurde. Jedes Mal wenn diese erstellt wird, inkrementierst Du den Zähler, beim Zerstören dekrementierst Du den wieder.
Wenn der Zähler größer 1 wird, dann wirfst Du eine
Exception raus.
Immer im Destructor wieder dekrementieren, auch bei der
Exception, da unter
Win32 der auch wieder aufgerufen wird, wenn eine
Exception auftritt (Resourcenfreigabe).
...
...