>OTOH, if the parent form is always reactivated after the child form is closed by the user interactively, perhaps storing the pointer in parentForm.DeActivate() and restoring it in parentForm.Activate() might work, too.
I agree, some sort of callback function is needed - the child needs to tell the parent when it exited, or the parent may check for the kid when it activates. Though, it may activate for a dozen other reasons, which would involve more code to isolate this condition (did we launch the child form already? did we find it closed already or should we check now?), so callback is IMO far better.
And it doesn't have to be much - a simple property set by the child form may suffice. Well, a property with _assign method :).