![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TToolButton и Диспетчер драйверов ODBC
Kolan © (2009-04-16 17:15:00)Есть кнопка тулбара со стилем
tbsDropDown; в инспекторе объектов к кнопке привязаноSavePopupMenu. В меню просто два пункта к которым привязаны экшены. Все просто. Вроде...
При нажатии на треугольничек на кнопке по которому должно выпасть меню происходит исключение[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Причем тут это? И где поставить в VCL точку останова, чтобы отладиться?
Kolan (2009-04-17 14:36:00) [1]
> программу переделывать
Ну, только не всю, или всю, но не сразу, слишком большая :)
Kolan (2009-04-17 14:36:00) [2]clickmaker, да, точно, перечитал справку...
На той закладке, что для базы, все лежит на фрейме, а фрейм создается динамически. Если не создавать фейм, то и OnUpdate вызываться видимо не будет. Нормальное решение?
Игорь Шевченко (2009-04-17 14:35:00) [3]
> Благо у меня есть фасад к базе
фасад без забора - впустую потраченное время
> И как это лечить?
программу переделывать
clickmaker (2009-04-17 14:22:00) [4]> Почему вызывается другой апдейт?
OnUpdate вызывается в момент ухода приложения в состояние простоя (idle), когда нет необработанных сообщений в очереди.
ну и такое состояние возникает в том числе после вызова меню
Kolan (2009-04-17 14:14:00) [5]clickmaker, не знаю окуда вы это знаете... Я вот OnUpdate не догадался проверить...
Нашел причину. Сюда по сообщению база была таки причем, поэтому решил проверить её. Благо у меня есть фасад к базе, так что я поставил точки на все публичные методы фасада.
И оказалось, что один из них действительно вызывается при выпадении меню.
Надо сказать, что в программе есть два режима (режим определяется по параметру в командной строке) с базой и без базы. В режиме с базой показывается закладка с гридом и т. д. в режиме без базы закладка срывается. Игрался я с тем что без базы.
Так вот, на той закладке где грид (которая мне была не видна) есть Попап меню, к которому подключен Экшен, у которого в OnUpdate есть обращение к базе (для каждой сроки проверяет есть ли спец. данные и позволяет их открыть из контекстного меню).
И вот в чем соль.При нажатии на тот самый треугольничек на кнопке тул бара (которая, напомню, находится не на закладке с гридом, а в другом месте) вызывался OnUpdate того экшена, который находился на другой закладке (для работы с базой), а так как я использовал режим без базы и подключение было не настроено, появлялась сабжевая ошибка.
Вопрос, как это так получается? Почему вызывается другой апдейт? И как это лечить?
clickmaker (2009-04-17 13:04:00) [6]> Где тут могла проскочить база?
вроде, неглупый человек... ну откуда тут могут знать, где у тебя там могла проскочить база?
Kolan (2009-04-17 13:02:00) [7]Добавляю кнопку на тул бар. Кидаю Поп меню. Связываю. Запускаю, нажимаю на треугольник — ошибка. Где тут могла проскочить база?
clickmaker (2009-04-17 12:49:00) [8]> База в программе используется. SQL Server через ADO, но
> в той части где появляется ошибка база не используется
значит таки используется
Kolan (2009-04-17 12:39:00) [9]Да где ж её искать то :'|? Я бы и рад исправить.
Игорь Шевченко (2009-04-17 12:24:00) [10]
> Ради эксперимента добавил еще кнопку и меню, связал их.
> Тоже самое.
значит тебе надо еще одну ошибку исправить
Kolan (2009-04-17 11:55:00) [11]Нет, нету. Интересно, что у меня две такие кнопки (открыть и сохранить) к ним привязаны разные меню. Ошибка возникает при нажатии на любую стрелочку.
Ради эксперимента добавил еще кнопку и меню, связал их. Тоже самое.
clickmaker (2009-04-17 11:50:00) [12]> и по выпадению этого меню из кнопки никакого моего коде
> не работает
OnUpdate у экшенов есть?
Kolan (2009-04-17 11:48:00) [13]Не, ей богу не шучу.
База в программе используется. SQL Server через ADO, но в той части где появляется ошибка база не используется и по выпадению этого меню из кнопки никакого моего коде не работает. Я сам в недоумении, понятно, что видимо где-то в другом месте что-то не так, а откуда начинать расследование — не понятно.
clickmaker (2009-04-17 11:05:00) [14]> Кажется ошибка возникает при вызове TrackPopupMenu в TPopupMenu.Popup.
>
>
> Причем тут база
за дурачков нас держишь? если это была попытка пошутить, то она не удалась
Игорь Шевченко (2009-04-16 18:00:00) [15]
> В стеке вот что:
какой кошмар. тебе надо найти ошибку в программе
Kolan (2009-04-16 17:40:00) [16]Кажется ошибка возникает при вызове
TrackPopupMenuвTPopupMenu.Popup.
Причем тут база...
Kolan (2009-04-16 17:37:00) [17]Такс...
В программе естьApplicationEvents. Поставил точку вApplicationEventsException.
В стеке вот что:
KFreGrafMainForm.TMainForm.ApplicationEventsException(???,$19F7AD0)
AppEvnts.TCustomApplicationEvents.DoException(???,???)
AppEvnts.TMultiCaster.DoException($F3C548,$19F7AD0)
Forms.TApplication.HandleException($F3C548)
Menus.TPopupList.MainWndProc(???)
Classes.StdWndProc(198606,279,7603841,0)
:7e368734 USER32.GetDC + 0x6d
:7e368816 ; C:\WINDOWS\system32\USER32.dll
:7e378ea0 ; C:\WINDOWS\system32\USER32.dll
:7e378eec ; C:\WINDOWS\system32\USER32.dll
:7c90e453 ntdll.KiUserCallbackDispatcher + 0x13
Menus.TPopupMenu.Popup(???,???)
Что значат вопросы в Popup?
clickmaker (2009-04-16 17:37:00) [18]> Нажал на выпадающее меню — выпало Источник данных не найден
значит где-то в событиях есть попытка обращения к ODBC
Игорь Шевченко (2009-04-16 17:35:00) [19]
> Нажал на выпадающее меню — выпало Источник данных не найден.
> ..
не нажимай
Kolan (2009-04-16 17:33:00) [20]Так нет в этой части её (работы с БД).
Нажал на выпадающее меню — выпало меню. Вот и все что я хочу. А получается: Нажал на выпадающее меню — выпало Источник данных не найден...