Верхняя модальная форма закрывается во вложенных модальных формах, закрывает все остальные модальные формы? - PullRequest
0 голосов
/ 20 апреля 2010

Когда форма A является модальной и отображает вторую модальную форму B, и устанавливается модальный результат для B, а затем B закрывается, A также закрывается.

Как это можно предотвратить?

1 Ответ

8 голосов
/ 20 апреля 2010

Это не так, в вашем коде должна быть какая-то другая проблема. Установка ModalResult повлияет только на текущую модальную форму. Попробуйте этот очень простой пример:

  • Создать новую форму

  • Перетащите на нее кнопку

  • В кнопку OnClick обработчик событий добавьте этот код:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TForm1.Create(Self) do begin
        if ShowModal = mrCancel then
          Self.Color := RGB(Random(256), Random(256), Random(256));
      end;
    end;
    

Вы заметите, что каждое нажатие кнопки создает новую модальную форму, и вы можете повторять это так часто, как пожелаете. Закрытие формы установит для ModalResult значение mrCancel и снова включит родительскую форму. Для выхода из приложения вам нужно будет закрыть все формы, одну за другой, в обратном порядке создания.

...