![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
так обработка сообщений идет в совсем другом контексте.
т.е. что происходит: вызываем curPanel.ShowNext, она шлет сообщение, происходит выход из блока try ( потому как исключений нет ) курсор становится на строку за блоком и в это время сообщение доходит до адресата -- появляется исключение. ну а дальше все понятно ![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
_hunter
Т.е. исключение на ShowNext происходит только лишь в режиме трассировки!? На самом деле отрабатывают все инструкции после блока try...except, и только потом возникает ошибка!? Добавлено @ 19:39 Где же её тогда перехватывать!? |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
нет, в режиме "без отладки" это исключение тоже появится и тоже проскочи мимо.
ловить его нужно там, где оно бросается. т.е. на самом высоком уровне приемника сообщений. в данном случае в CMVisibleChanged( -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Попробовал отловить в CMVisibleChanged - результат тот же.....при возникновении ошибки выполняется инструция следующая за блоком try...except...
![]() Вот:
Сначала появляется сообщение об ошибке, а затем появляется сообщение "Тест"... Это сообщение отредактировал(а) Susel - 14.1.2006, 11:27 |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Выложи здесть или пришли на почту, тестовый проект и свои компоненты
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Выкладываю тестовый пример с тестовыми компонентами. Расширение pas нужно изменить на rar.....
Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Твое сообщение перехватывают в модуле Controls
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
А как же мне его отловить!?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
замени оконную процедуру...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Можно конечно и заменить оконную процедуру, но может стоит подумать "стоит ли игра свечь?" Может проще поделиться с людьми идеей, которую хочешь сделать и они предложат вариант при котором не нужно будет переписывать все компоненты, которые хочется положить на эту панель...
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Да идея то прозрачна из примера, на форме есть набор связанных панелей, которые должны появляться друг за другом по нажатию определённой клавиши, при этом предыдущая панель не должна быть доступна для редактирования. Есть комбобокс, на который вешается некоторое условие проверки (на основе информации из БД) и в случае неудовлетворительной проверки комбобокс не должен терять фокуса, т.е. из него не возможно выйти, а следовательно и следующая панель не должна появиться.
Вот в общем то в кратце и вся идея (правда кроме перечисленного и панель и комбобокс обладают ещё рядом дополнительных возможностей, не относящихся к вопросу) |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
По мне проще проверку качества заполнения данных вынести из компонентов и делать ее перед созданием новой панели. Или кто мешает Вызвать OnExit у компонентов до создания новой панели?
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Susel |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Дело в том, что проверка содержимого производится при помощи SQL запроса, в качестве параметра используюещего введённое значение. Причем запрос для проверки настраивается (хранится в одной из системных таблиц).
События OnExit для компонентов могут быть и не определены, а проверку делать нужно..... Допустим что вызвали OnExit для всех компонентов, но в случае ошибки как я понял опять же ошибка будет перехвачена оконной процедурой! |
||||
|
|||||
Susel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Неужели данную проблему таки можно решить, только переписав оконную процедуру!?
![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
учитывая что это проблема места обработки...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |