Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ShowModal в DataModule.OnDestroy [D7]


Страницы:   1 2

Juice ©   (2006-05-22 13:41:00) 

В обработчике события DataModule.OnDestroy я закрываю наборы данных и при этом нужно вывести диалоговое окно, обязательно нужно. У меня есть специальная для этих целей форма, создаю ее и вызываю ShowModal - форма не показывается а ShowModal возвращает mrCancel, хотя в коде и в помине mrCancel не должно быть! Попробовал провести эксперимент: добавил в проект fmTest и в DataModule.OnDestroy вызвал fmTest.ShowModal - получаю EAccessViolation on address 00000000. Короче говоря не хочет фурычить ShowModal в DataModule.OnDestroy. Может чего подскажите ?


Плохиш   (2006-05-22 14:08:00) [21]


> Juice ©   (22.05.06 14:02) [7]

Честно сказать совершенно не интересно выяснять в каком месте суперпуперпрограммы переменной fmTest присваивается значение nil. Но за такой код я отрываю руки.


Сергей М.   (2006-05-22 14:06:00) [22]


> Juice ©   (22.05.06 14:02) [7]


Отладчик Борландом для Пушкина писан что ли ?


Juice   (2006-05-22 14:02:00) [23]


> Врёшь.

Вот этот гениальный код:

procedure TdmCentral.DataModuleDestroy(Sender: TObject);
begin
 fmTest.ShowModal;
end;

Ну и конечно:
...
Application.CreateForm(TfmTest, fmTest);
 Application.Run;
end.


Плохиш   (2006-05-22 13:57:00) [24]


> получаю EAccessViolation on address 00000000.


> В -1-ой. Все что надо то создано, это 100%.

Врёшь.


Juice   (2006-05-22 13:54:00) [25]


> Не пытайтесь показывать форму в данном обработчике. Придумайте
> что-нибудь получше.

Интересно было бы разобраться почему, принцип какой ? Раньше я для этих целей просто показывал (Show) форму и в цикле
repeat
Application.Processmessages
until ...
делал то что надо, и все работало как часы. Потом логика измениласть так, чтобы юзер кроме как на этой форме ничего не мог клацнуть, и вот решил ShowModal вызывать. На OnClose я конечно уже перевесил, просто инетересно почему так происходит, чтобы потом не напороться на те же грабли.


> Ошибка в 17й строке. Все объекты перед использованием должны
> быть созданы.

В -1-ой. Все что надо то создано, это 100%.


Плохиш   (2006-05-22 13:49:00) [26]


> Чапаев ©   (22.05.06 13:48) [3]
>
> > Придумайте что-нибудь получше.
>
> OnClose, OnCloseQuery...

Для TDataModule?


Чапаев   (2006-05-22 13:48:00) [27]


> Придумайте что-нибудь получше.

OnClose, OnCloseQuery...


Loginov Dmitry   (2006-05-22 13:46:00) [28]

Juice ©   (22.05.06 13:41)
Может чего подскажите ?


Не пытайтесь показывать форму в данном обработчике. Придумайте что-нибудь получше.


Плохиш   (2006-05-22 13:45:00) [29]

Ошибка в 17й строке. Все объекты перед использованием должны быть созданы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо