![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ShowModal в DataModule.OnDestroy [D7]
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й строке. Все объекты перед использованием должны быть созданы.