Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 13:50   #1
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию "Canvas does not allow drawing" при ADO в асинхронном режиме

Добрый день. Проблема собственно такая: на форме ADOQuery, который запущен в асинхронном режиме и отлавливает сообщения с сервера об изменениях в конкретной таблице. При получении сообщения отрабатывает событие OnFetchProgress, в котором находится обработчик типа

Код:
qry1.Close;
qry1.Open;
в котором просто обновляю содержимое таблицы, в которой произошли изменения. Через раз вылетает ошибка "Canvas does not allow drawing".
С чем это может быть связано? если в этом обработчике вместо обновления таблицы написать что то типа

Код:
memo1.lines.add('Получено новое сообщение')
то все работает нормально.

Ах да, на форме лежит пара dbEditов, связанных с обновляемой таблицей. Если их убрать - то все нормально отрабатывает.

Последний раз редактировалось kitty19; 05.06.2014 в 13:59.
kitty19 вне форума Ответить с цитированием
Старый 05.06.2014, 14:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А ты перед обновлением в свойствах DataSource этих эдитов ставь nil, чтоб отцепить их. А после обновления прописывай имевшийся там Датасет. Возможно это решит проблему.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2014, 14:48   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Может быть иногда слишком часто поступают сообщения об изменениях? Может переоткрывать набор данных не на каждое сообщение а по таймеру с разумным интервалом? А по сообщению выставлять флажок что требуется обновление.
northener вне форума Ответить с цитированием
Старый 05.06.2014, 15:15   #4
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию

Цитата:
А ты перед обновлением в свойствах DataSource этих эдитов ставь nil, чтоб отцепить их. А после обновления прописывай имевшийся там Датасет. Возможно это решит проблему.
- не помогло, к сожалению(

Цитата:
Может быть иногда слишком часто поступают сообщения об изменениях? Может переоткрывать набор данных не на каждое сообщение а по таймеру с разумным интервалом? А по сообщению выставлять флажок что требуется обновление.
- не зависит от частоты сообщений. Таймер прекрасный вариант, но задача именно в том, чтобы реализовать через асинхронность, без использования таймеров.
kitty19 вне форума Ответить с цитированием
Старый 05.06.2014, 15:25   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от kitty19 Посмотреть сообщение
- не зависит от частоты сообщений. Таймер прекрасный вариант, но задача именно в том, чтобы реализовать через асинхронность, без использования таймеров.
Так это и будет "через асинхронность". Таймер тут только служит аналогом ФНЧ не пропуская, допустим, двух обновлений в течении 100-500 мсек.
northener вне форума Ответить с цитированием
Старый 05.06.2014, 15:55   #6
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию

Цитата:
Так это и будет "через асинхронность". Таймер тут только служит аналогом ФНЧ не пропуская, допустим, двух обновлений в течении 100-500 мсек.
В принципе проблема решилась заменой DBEdit-ов на обычные, так что оставлю этот вариант если опять что-то возникнет.
kitty19 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Error: "Canvas does not allow drawing", Delphi7 VVM Общие вопросы Delphi 2 19.07.2009 16:38
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06