Ein modales Fenster wird geschlossen wenn der Eigenschaft ModalResult des Formulars ein Wert ungleich mrNone zugewiesen wird. Dies kann manuell erreicht werden oder durch Konfiguration der Eigenschaft ModalResult der Buttons.
Warum du zusätzlich noch Close aufrufst entzieht sich vernünftigen Gedanken und macht hier dein Problem aus.
Auch solltest du bedenken kein OnClick Ereignis zu zuweisen, wenn der jeweilige Button in seiner Eigenschaft ModalResult einen Wert <> mrNone enthält. Näheres dazu verrät die ausgiebige Hilfe zum Thema
TModalResult,
TCustomForm.ShowModal,
TCustomForm.ModalResult und
TCustomButton.ModalResult.
Ansonsten kann ich nur nochmals davon abraten with/do Blöcke zu verwenden.