I create a non-modal form like this:
  procedure TForm1.Button1Click(Sender: TObject); begin FNonModalForm := TForm2.Create(Self); FNonModalForm.Show; end;
What's a good way to have a non-modal Form2 signal its owner Form1 that the non-modal form has been closed by the user so the owner can free Form2?

AFAIK, it can't be done in a callback from Form2.FormClose because that's too early for the owner Form1 to free Form2.   Send a Windows message to the owner form?