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

Вниз

почему OnIdle перестает вызываться   Найти похожие ветки 

 
SkyN   (2009-04-07 14:45) [0]

почему OnIdle перестает вызываться, если не трогаю приложение некоторое время?


 
SkyN   (2009-04-07 14:50) [1]

добавлю, что на форме таймер, который раз в секунду исправно пишет в лог файл.
процедура OnIdle  тоже пишет какое то время. дальше, если не трогать приложение, то таймер продолжает писать, а вот от OnIdle  сообщений уже нет.


 
{RASkov} ©   (2009-04-07 15:11) [2]

> [0] SkyN   (07.04.09 14:45)

А с var Done: Boolean у тебя что?


 
Amoeba ©   (2009-04-07 15:22) [3]

Не надо запихивать запись лога в OnIdle. Это событие не для этого существует.


 
SkyN   (2009-04-07 16:08) [4]

to {RASkov}:
Done по логике программы могу возвращать разную. в логе информации о том что возвращаю сейчас нет.
to Amoeba:
т.е. проблема в записи лог файла? ещё какие ограничения есть? )))


 
Сергей М. ©   (2009-04-07 16:22) [5]


> дальше, если не трогать приложение, то ..от OnIdle  сообщений уже нет


Потому что событие Idle не происходит.
Соответственно процедура OnIdle не вызывается.


 
Anatoly Podgoretsky ©   (2009-04-07 16:26) [6]

Так откуда оно возникнет, если "не трогать приложение"


 
SkyN   (2009-04-07 17:42) [7]

от таймера
таймер исправно, раз в секунду, срабатывает


 
Игорь Шевченко ©   (2009-04-07 17:46) [8]


> от таймера


от таймера оно не возникнет


 
{RASkov} ©   (2009-04-07 20:06) [9]

> [4] SkyN   (07.04.09 16:08)

Вообще верное замечание [3] по поводу записи лога в данном событии.... Оно точно не для этого...

А вот Done нужно False ставить, чтоб данное событие не переставало генерироваться....


 
SkyN   (2009-04-08 15:44) [10]

мне не надо чтобы событие было в цикле, т.е. Done я регулярно ставлю в True. Но я хочу, чтобы каждый раз, когда пользователь поменял настройки, произошло событие от таймера, пришли данные по DDE, моё приложение отреагировало на любое событие windows, в любом из этих случаев последним действием (т.е. очередь событий пуста) вызвался бы мой код.

но если пришло много данных по DDE, то мой код должен вызваться только один раз.


 
Sapersky   (2009-04-08 16:16) [11]

ИМХО, проще и надёжнее выставлять какой-то флаг и проверять его в таймере.
OnIdle с Done = True предназначено, как мне кажется, в основном для определения момента завершения пользовательского ввода. При этом можно выполнить некие "отложенные" второстепенные действия, которые нежелательно вешать на события контролов во избежание заметных тормозов (например, действие продолжительностью 100-200 мс в OnMouseMove). Ещё можно (и даже лучше) вынести эти действия в отдельный поток, но это требует синхронизации; OnIdle в этом смысле проще.


 
Сергей М. ©   (2009-04-08 23:00) [12]


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


Можно подумать, что какой-то там бедняга-пользователь, "меняющий настройки", обязан "по твоему хотенью" знать о каком-то там "таймере"..


 
Германн ©   (2009-04-09 00:23) [13]


> Сергей М. ©   (08.04.09 23:00) [12]
>
>
> > хочу, чтобы каждый раз, когда пользователь поменял настройки,
>
> >  произошло событие от таймера,
>
>
> Можно подумать, что какой-то там бедняга-пользователь, "меняющий
> настройки", обязан "по твоему хотенью" знать о каком-то
> там "таймере"..
>

Неверно прочитал. Там не было никакой причинно-следственной связи между сменой настроек и событиями таймера.

P.S.
Но сама задача мне плохо ясна.



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
4-1203581655
Начинающий
2008-02-21 11:14
2009.05.24
Кто обрабатывает нажатие на кнопку в MessageBox ?


2-1239098915
AlexDan
2009-04-07 14:08
2009.05.24
ms sql и delphi


2-1239643253
VoznikVopros
2009-04-13 21:20
2009.05.24
Как изменить заголовок окна при вызове ShowMessage()?


10-1157968431
silversmith
2006-09-11 13:53
2009.05.24
Ерунда при работе с Word.Application


2-1239093371
Анфиса
2009-04-07 12:36
2009.05.24
Excel в Delphi