Вниз
Скачать: CL | DM;

Как прервать показ формы для потомка 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.018 c
1-31312
Losyara
2003-06-26 17:46
2003.07.10
Какую мне подключиьт библеотеку?


1-31238
Mishenka
2003-06-29 16:02
2003.07.10
Как в ListBox удалить один пункт?


1-31246
shark
2003-06-29 18:56
2003.07.10
Файлы


3-31118
Max_
2003-06-17 16:50
2003.07.10
Trigger в Oracle


14-31456
sapsi
2003-06-23 11:19
2003.07.10
Телевизионные каналы теперь все контролируются государством




   Наверх