Wie kann ich also überprüfen, ob hinter der (nicht auf nil gestetzten) Variable noch ein intaktes Objekt hängt?
Kurz und schmerzlos: Gar nicht ohne ekelhafte Hacks.
Stattdessen könntest du aber deinen Ansatz verfeinern, indem du beim Zuweisen des Formulars das
OnDestroy
Event einer Methode deiner
TAdvSmartMessageBox
Instanz zuweist und dort für das "nil-en" der entsprechenden Variable sorgst. Das wäre jetzt nur der einfachste Ansatz (welcher Probleme machen könnte, wenn du das
OnDestroy
Event bereits für irgendetwas Anderes im Formular verwendest, etc.).
Alternativ könntest du auch allen betroffenen Forms ein Interface verpassen, über welches du dein Destroy-Event sauber registrieren könntest. Gibt viele Möglichkeiten ... wichtig ist, dass du über irgendeinen Callback mitbekommst, wenn das Formular zerstört wird.
Edit: Dein
messageBoxToast
solltest du dann ggfls. auch selbst verwalten (also
AOwner
=
nil
).