RaZEr
Так надеялся, что объяснять не буду (долго просто) но не выйдет

.
Итак, для приложений многооконных (многофрейменных) есть такая проблема: если одно окно зависит от другого (кнопка одного открывает другое), то желательно перед созданием дочернего окна проверить, а нет ли его уже:
Код:
if Assigned(FChildForm) then FChildForm.Free;
А проблема возникает тогда, когда дочернее окно закрывается собственными кнопками (exmpl: Self.Close), FChildForm в Nil не устанавливается, тогда приведенный код - ошибочен (access violation).