Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.31;
Скачать: CL | DM;

Вниз

TToolButton и Диспетчер драйверов ODBC   Найти похожие ветки 

 
Kolan ©   (2009-04-16 17:15) [0]

Есть кнопка тулбара со стилем tbsDropDown; в инспекторе объектов к кнопке привязано SavePopupMenu. В меню просто два пункта к которым привязаны экшены. Все просто. Вроде...

При нажатии на треугольничек на кнопке по которому должно выпасть меню происходит исключение [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию


Причем тут это? И где поставить в VCL точку останова, чтобы отладиться?


 
Игорь Шевченко ©   (2009-04-16 17:19) [1]


> Причем тут это?


у тебя ошибка в программе


 
Kolan ©   (2009-04-16 17:26) [2]


> у тебя ошибка в программе

Дык я знаю, откуда начинать искать?


 
clickmaker ©   (2009-04-16 17:30) [3]

так подробно расписан интерфейс, но ни слова про работу с БД


 
Kolan ©   (2009-04-16 17:33) [4]

Так нет в этой части её (работы с БД).

Нажал на выпадающее меню — выпало меню. Вот и все что я хочу. А получается:  Нажал на выпадающее меню — выпало Источник данных не найден...


 
Игорь Шевченко ©   (2009-04-16 17:35) [5]


> Нажал на выпадающее меню — выпало Источник данных не найден.
> ..


не нажимай


 
clickmaker ©   (2009-04-16 17:37) [6]

> Нажал на выпадающее меню — выпало Источник данных не найден

значит где-то в событиях есть попытка обращения к ODBC


 
Kolan ©   (2009-04-16 17:37) [7]

Такс...

В программе есть 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?


 
Kolan ©   (2009-04-16 17:40) [8]

Кажется ошибка возникает при вызове TrackPopupMenu в TPopupMenu.Popup.

Причем тут база...


 
Игорь Шевченко ©   (2009-04-16 18:00) [9]


> В стеке вот что:


какой кошмар. тебе надо найти ошибку в программе


 
clickmaker ©   (2009-04-17 11:05) [10]

> Кажется ошибка возникает при вызове TrackPopupMenu в TPopupMenu.Popup.
>
>
> Причем тут база

за дурачков нас держишь? если это была попытка пошутить, то она не удалась


 
Kolan ©   (2009-04-17 11:48) [11]

Не, ей богу не шучу.
База в программе используется. SQL Server через ADO, но в той части где появляется ошибка база не используется и по выпадению этого меню из кнопки никакого моего коде не работает. Я сам в недоумении, понятно, что видимо где-то в другом месте что-то не так, а откуда начинать расследование — не понятно.


 
clickmaker ©   (2009-04-17 11:50) [12]

> и по выпадению этого меню из кнопки никакого моего коде
> не работает

OnUpdate у экшенов есть?


 
Kolan ©   (2009-04-17 11:55) [13]

Нет, нету. Интересно, что у меня две такие кнопки (открыть и сохранить) к ним привязаны разные меню. Ошибка возникает при нажатии на любую стрелочку.

Ради эксперимента добавил еще кнопку и меню, связал их. Тоже самое.


 
Игорь Шевченко ©   (2009-04-17 12:24) [14]


> Ради эксперимента добавил еще кнопку и меню, связал их.
> Тоже самое.


значит тебе надо еще одну ошибку исправить


 
Kolan ©   (2009-04-17 12:39) [15]

Да где ж её искать то :"|? Я бы и рад исправить.


 
clickmaker ©   (2009-04-17 12:49) [16]

> База в программе используется. SQL Server через ADO, но
> в той части где появляется ошибка база не используется

значит таки используется


 
Kolan ©   (2009-04-17 13:02) [17]

Добавляю кнопку на тул бар. Кидаю Поп меню. Связываю. Запускаю, нажимаю на треугольник — ошибка. Где тут могла проскочить база?


 
clickmaker ©   (2009-04-17 13:04) [18]

> Где тут могла проскочить база?

вроде, неглупый человек... ну откуда тут могут знать, где у тебя там могла проскочить база?


 
Kolan ©   (2009-04-17 14:14) [19]

clickmaker, не знаю окуда вы это знаете... Я вот OnUpdate не догадался проверить...

Нашел причину. Сюда по сообщению база была таки причем, поэтому решил проверить её. Благо у меня есть фасад к базе, так что я поставил точки на все публичные методы фасада.
И оказалось, что один из них действительно вызывается при выпадении меню.

Надо сказать, что в программе есть два режима (режим определяется по параметру в командной строке) с базой и без базы. В режиме с базой показывается закладка с гридом и т. д. в режиме без базы закладка срывается. Игрался я с тем что без базы.

Так вот, на той закладке где грид (которая мне была не видна) есть Попап меню, к которому подключен Экшен, у которого в OnUpdate есть обращение к базе (для каждой сроки проверяет есть ли спец. данные и позволяет их открыть из контекстного меню).

И вот в чем соль. При нажатии на тот самый треугольничек на кнопке тул бара (которая, напомню, находится не на закладке с гридом, а в другом месте) вызывался OnUpdate того экшена, который находился на другой закладке (для работы с базой), а так как я использовал режим без базы и подключение было не настроено, появлялась сабжевая ошибка.

Вопрос, как это так получается? Почему вызывается другой апдейт? И как это лечить?


 
clickmaker ©   (2009-04-17 14:22) [20]

> Почему вызывается другой апдейт?

OnUpdate вызывается в момент ухода приложения в состояние простоя (idle), когда нет необработанных сообщений в очереди.
ну и такое состояние возникает в том числе после вызова меню


 
Игорь Шевченко ©   (2009-04-17 14:35) [21]


> Благо у меня есть фасад к базе


фасад без забора - впустую потраченное время


> И как это лечить?


программу переделывать


 
Kolan ©   (2009-04-17 14:36) [22]

clickmaker, да, точно, перечитал справку...

На той закладке, что для базы, все лежит на фрейме, а фрейм создается динамически. Если не создавать фейм, то и OnUpdate вызываться видимо не будет. Нормальное решение?


 
Kolan ©   (2009-04-17 14:36) [23]


> программу переделывать

Ну, только не всю, или всю, но не сразу, слишком большая :)



Страницы: 1 вся ветка

Текущий архив: 2009.05.31;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
3-1221633388
Drowsy
2008-09-17 10:36
2009.05.31
Commit транзакции инсерта в таблицу базы закрывает эту таблицу.


3-1221337655
Zilog
2008-09-14 00:27
2009.05.31
Подскажите, как из Делфи получить доступ к MySQL на сервере?


2-1239771932
an-petroff
2009-04-15 09:05
2009.05.31
Выход SOAP из приложения delphi


15-1238275805
Юрий
2009-03-29 00:30
2009.05.31
С днем рождения ! 29 марта 2009 воскресенье


2-1239895427
Igor2010
2009-04-16 19:23
2009.05.31
WordApplication1-компонент