Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
3-1221485321
Jeer
2008-09-15 17:28
2009.05.31
DBExpress.CleanupIntance;


15-1222358736
novarm44
2008-09-25 20:05
2009.05.31
Переход с Turbo Delphi обратно на Delphi 5


4-1210438911
Тимохов
2008-05-10 21:01
2009.05.31
Как правильно отрисовать в WM_PAINT?


8-1194463264
Алексей
2007-11-07 22:21
2009.05.31
Анимационный вывод изображения


15-1238162684
axis_of_evil
2009-03-27 17:04
2009.05.31
печать .pdf со смещением





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский