Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OnIdle в KOL


Un-man ©   (2003-02-12 10:19:00) 

Как в KOL заставить приложение выполнять что-то, пока нет других сообщений? В Делфах был OnIdle, а в KOL'е я ничего похожего не нашел. Заранее спасиба.


SPeller   (2003-10-08 20:56:00) [1]


> Пытался сделать через дополнительный процесс (Thread) -
> но на время его выполнения программа подвисает. Странно...

А не должно. Что это за многопоточность получается тогда?


Vladimir Kladov   (2003-10-08 15:16:00) [2]

можно угадаю почему? Не надо вызывать execute. Надо вызывать resume. Смотрите примеры.


Sapersky   (2003-10-08 14:24:00) [3]

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


Yury Sidrov   (2003-10-08 13:20:00) [4]

Действительно, он соответствует VCL'овскому Done=True, т.к. на мой взгляд это единственный реально нужный вариант. Для вещей, которые в VCL делались при Done=False, лучше пользовать таймер.


Sapersky   (2003-10-08 09:38:00) [5]

Какой-то он тормозной, этот OnIdle - наверное, соответствует VCL'овскому Done=True. А мне бы надо Done=False.


Vladimir Kladov   (2003-10-07 17:53:00) [6]

В 1.85 появился RegisterIdleHandler. Оно конечно можно еще и в MCK добавить соответственно TKOLApplet.OnIdle.


Sapersky   (2003-10-07 16:44:00) [7]

Да, неплохо бы пример...


GandalfTheWhite   (2003-03-20 11:46:00) [8]

Пиши посмотрим...


Belest   (2003-03-18 18:22:00) [9]

Примерчик бы посмотреть...


Gandalf   (2003-02-12 21:11:00) [10]

Мда я про это подзабыл... но пожалуй нетрудно добавить OnIndy в КОЛ, затраты невели, хотя польза неочевидна.


Kladov   (2003-02-12 16:07:00) [11]

Зачем править kol.pas, когда свой цикл оработки сообщений никто не запретил? Даже для mck, пишем свой код в proj_1.inc, и все. Не забываем добавить после кода Exit; чтобы не сработал Run(...) в proj_2.inc.


Gandalf   (2003-02-12 14:28:00) [12]

Думаю пока только правкой КОЛ, вида:

procedure Run( var AppletWnd: PControl );
begin
 AppletRunning := True;
 Applet := AppletWnd;
 AppletWnd.CreateWindow; //virtual!!!
 while not AppletTerminated do
 begin
   WaitMessage;
    if AppletWnd.ProcessMessages not then // New
     if Assigned(FOnIdle) then           // New
       FOnIdle...;                        // New
 end;
 if AppletWnd <> nil then
   TerminateExecution( AppletWnd );
end;

Плбс мелочь (сам Idle объявить и т.п.). Можно еще поток организовать со слабым приоритетом. Можно таймер.


Наверх

Титульная страница Поиск, карта сайта Написать письмо