Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.06.2013, 15:18
BorodaOleg BorodaOleg вне форума
Прохожий
 
Регистрация: 20.06.2013
Сообщения: 12
Версия Delphi: 7
Репутация: 10
Печаль Программно закрыть модальное окно

В программе открывается модальное окно (должно выполнять некоторую проверку, если все Ок, то закрыться, если нет, пользовытель выполняет нектороые действия). Делаю так:

Код:
Form1 
procedure TForm1.FormActivate(Sender: TObject);
begin
    Form2.ShowModal;
    FirstShow:=false;
end;

Form2
procedure TForm2.FormActivate(Sender: TObject);
begin
  Form2.ModalResult:=mrCancel;
  Form2.Close;
end;
MAD: Пользуемся тегами!

По всем законам физики Form2 должно закрываться. У меня на экране 2 окна ((((

Последний раз редактировалось M.A.D.M.A.N., 20.06.2013 в 15:22.
Ответить с цитированием
  #2  
Старый 20.06.2013, 15:30
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Попробуй убрать из автосоздаваемых и разрушать при закрытии
Project --> Options --> Forms, убрать форму 2 из auto create

При вызове формы:
Код:
if (not Assigned(form2)) then form1:=Tform2.Create(Self);
form2.showmodal;

На событии OnClose:
Код:
Action:=caFree;
form2:=nil;

Должно помочь
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #3  
Старый 20.06.2013, 15:43
BorodaOleg BorodaOleg вне форума
Прохожий
 
Регистрация: 20.06.2013
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Не-а, не помогает. Все равно 2 окна открывается
Ответить с цитированием
  #4  
Старый 20.06.2013, 16:09
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Попробуйте НЕмодальное - просто show

Эти модальные окна все время выносят мозг. Стараюсь вообще их не использовать
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #5  
Старый 20.06.2013, 16:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от BorodaOleg
По всем законам физики Form2 должно закрываться. У меня на экране 2 окна ((((
не должно! ModalResult устанавливается в ноль после обработки события OnActivate. строки 4819-4820 в Forms.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 20.06.2013, 16:44
BorodaOleg BorodaOleg вне форума
Прохожий
 
Регистрация: 20.06.2013
Сообщения: 12
Версия Delphi: 7
Репутация: 10
По умолчанию

Т.е. получается, что сразу отрабатывается событие onActivate, а потом ModalResult устанавливается в 0?
Круто!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025