Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизКак прервать показ формы для потомка TCustomForm Найти похожие ветки
← →
Saint (2003-06-27 05:51) [0]Перед показом потомка проводится инициализация в перекрытом DoShow (открытие БД, таблиц и создание объектов), если происходит сбой, кидаю Exception. Но форма все равно появляется!!! Менять Visible нельзя - перед вызовом DoShow устанавливается внутренний флаг, запрещающий это (как в обработчиках событий OnShow и OnHide).
Есть вариант при сбое инициализаци послать форме сообщение о закрытии, но это криво (и почему-то не работает для главной формы приложения)(хотелось бы прервать показ формы в самом начале процесса, до установки всяких флагов, посылки WM_SHOWWINDOW и т.д.).
Возможно нужно переместить инициализацию в другой метод, или ловить какое сообщение? Есть у кого мысли по этому поводу?
← →
Hooch (2003-06-27 08:14) [1]не проще инициализацию вынести в отдельную процедуру, потом
With TMyForm.Create(Application) do
try
MyInit;
Show;
except
Free;
end;
← →
Zemal (2003-06-27 10:47) [2]Ну и зачем так делать? Не лучше ли воспользоваться событием OnCreate формы? Событие OnShow возникает уже после показа формы и в этом событии нельзя использовать свойство Visible, оно только для чтения и нельзя использовать метод Show, т.к. это будет зацикливание.
Я что-то непойму зачем тебе такая кривизна понадобилась???
При запуске приложения события возникают в таком порядке: OnCreate, OnActivate, OnShow. Бери события которые тебе нужны для задачи, а не лезь в дебри... может ещё скажешь что этих событий тебе нехватает или они кривые??? А может ты думаешь что событие OnCreate возбуждается до создания формы??? От того и пошол на такую кривизну? Тогда запомни что OnCreate возбуждается после создания формы и всех объектов, владельцем которых она является.
← →
Юрий Федоров (2003-06-27 10:55) [3]Лучше всего в конструкторе формы. Если поднимешь Exception - атоматически вызовется деструктор - и вообще никаких проблем
← →
Zemal (2003-06-27 11:15) [4]Ну и зачем так делать? Не лучше ли воспользоваться событием OnCreate формы? Событие OnShow возникает уже после показа формы и в этом событии нельзя использовать свойство Visible, оно только для чтения и нельзя использовать метод Show, т.к. это будет зацикливание.
Я что-то непойму зачем тебе такая кривизна понадобилась???
При запуске приложения события возникают в таком порядке: OnCreate, OnActivate, OnShow. Бери события которые тебе нужны для задачи, а не лезь в дебри... может ещё скажешь что этих событий тебе нехватает или они кривые??? А может ты думаешь что событие OnCreate возбуждается до создания формы??? От того и пошол на такую кривизну? Тогда запомни что OnCreate возбуждается после создания формы и всех объектов, владельцем которых она является.
← →
FoxBox (2003-06-27 11:53) [5]Можно по-другому поступить - создай функцию, которая
будет проводить операции с данными (подготовка там всякая),
что делаешь в onShow. Если функция вернула тебе "все крутняво",
делаешь Show для немодальных или ShowModal для модльных
(сам знаешь, что делать). В противном случае можно даже
обругать юзверя или еще что-то там.
← →
Alex_*** (2003-06-27 14:14) [6]Если вызываешь ShowModal, то можно ее перекрыть, и не вызывать inherited в случае сбоя.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c