Верхняя модальная форма закрывается во вложенных модальных формах, закрывает все остальные модальные формы?

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

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


person MX4399    schedule 20.04.2010    source источник


Ответы (1)


Это неправда, в вашем коде должна быть какая-то другая проблема. Настройка 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 и снова активирует родительскую форму. Для выхода из приложения вам нужно будет закрыть все формы, одну за другой, в обратном порядке создания.

person mghie    schedule 20.04.2010
comment
Правильно, после некоторого поиска и тестирования я обнаружил, что - подождите - как-то ...... кнопка имела ModalResult mrNo, и после закрытия второго диалогового окна класс формы сделал правильную вещь, и диалоговое окно было закрыто . - person MX4399; 12.05.2010