Для простого случая приложения с одним окном я мог бы попробовать что-то вроде этого:
procedure TYourForm.FindButtonClick(Sender: TObject);
begin
Self.Enabled := False;
FindDialog.Execute;
end;
...
procedure TYourForm.FindDialogClose(Sender: TObject);
begin
Self.Enabled := True;
end;
То есть первый метод - это обработчик нажатия кнопки. Второй - обработчик событий FindDialog.OnClose
.
Для более сложного случая я, вероятно, взгляну на исходный код TCustomForm.ShowModal
.