Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Модальные окна


Автор: MrDmitry 24.1.2014, 02:18
Помогите разобраться со следующей ситуацией.

Из главной формы программы вызываю модальное окно

Код

....
form1.showmodal;
....


В этом окне я провожу некоторые операции и затем открываю еще одно модальное окно двойным щелчком по таблице

Код

procedure form1.StringGrid1DblClick(Sender: TObject);
begin
....
form2.showmodal;
....
end;


во втором модальном окне я также провожу некоторые операции и закрываю его обычным способом

Код

...
form2.close;
....


Собственно 2 модальное окно закрывается 1 модальное окно висит. 
Но дело в том что на 1 модальном окне есть кнопка которая по сути эмитирует двойное нажатие мыши на таблице

Код

procedure  form1.bitbtn1_buttonClick(Sender: TObject);
begin
StringGrid1DblClick(nil);
end;


Модальное окно так же открывается, но после его закрытия закрываются оба окна (

Автор: PointerToNil 24.1.2014, 06:48
ставь breakpoint на закрытие первого, смотри по call stack, откуда оно вызывается 
(если не найдешь, куда поставить - создай обработчик OnClose)
или на свой form2.close breakpoint ставь и трассируй до победного

Автор: БелАмор 24.1.2014, 08:26
Цитата(MrDmitry @  24.1.2014,  03:18 Найти цитируемый пост)
во втором модальном окне я также провожу некоторые операции и закрываю его обычным способом

...
form2.close;
....


Хотел бы заметить, что через вызов Close закрывают немодальные окна.
Модальные же закрывают присвоением свойству ModalResult любого значения, отличного от mrNone,
обычно mrOk или mrCancel. Какие там могут быть побочные эффекты при закрытии модальной формы через Close, сейчас не помню, не исключено, что именно те, которые вы наблюдаете.

Автор: XperT 24.1.2014, 12:47
Скорее всего на bitbtn1 в свойстве ModalResult висит что-то отменное от mrNone

Автор: MrDmitry 24.1.2014, 13:44
Всем спасибо за помощь! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)