Горната модална форма затваря във вложени модални форми затваря всички други модални форми?

Когато форма 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