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

Вниз

Индикатор занятости программы? Подскажите как лучше организовать?   Найти похожие ветки 

 
lipskiy ©   (2004-08-25 21:00) [0]

Нужен некий индикатор того, что программа не висит а что-то делает. Какой-то живой индикатор. Проблема в том, что когда выполняется какой-то длительный код, не перерисовывается главное окно и не работают никакие таймеры. Application.ProcessMessages не подходит, так как у меня не цикл а просто длинный набор разнообразных тяжелых операций, разбавлять весь код Application.ProcessMessages совсем неинтересно.

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

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

Выполнять тяжелый код в потоке не предлагать, мне этот вариант не подходит по ряду причин.


 
Mim1 ©   (2004-08-25 21:01) [1]


> Выполнять тяжелый код в потоке не предлагать, мне этот вариант
> не подходит по ряду причин.


Каких?

По вопросу TAnimate смотрели?


 
sdw_syscoder   (2004-08-25 21:24) [2]

Самый самолёт в твоём случае - это через TAnimate!
Вобщем такая маза:

1. Создаём файл с ресурсом этого самого AVI-файла.
2. Линкуем его к проекту:
  {$R AVIRES.RES}
3. Инициализировать из ресурса будем так:
procedure AVIResource(OnOff: integer);
begin
 Animate1.ResName := "ReceiveAvi"; // ReceiveAvi-имя ресурса, с которым его скомпилили
 if OnOff = 1 then Animate1.Active := True
   else
    begin
      Animate1.Active := False;
      Animate1.ResName := "";
    end;
end;

4. А Врубать и Вырубать примерно так:
   AVIResource(1); // On
   AVIResource(0); // Off


Удачки!


 
lipskiy ©   (2004-08-25 21:48) [3]

Спасибо, эту тему не рассматривал.
Обязательно попробую.

> > Выполнять тяжелый код в потоке не предлагать, мне этот
> вариант
> > не подходит по ряду причин.
>
>
> Каких?

Во-первых, проект почти готов, он однопоточен и перелопачивать его нет возможности.
Во-вторых, смысла большого нет, поскольку во время выполнения тяжелых операций пользователю все равно не разрешается работать с интерфейсом программы, он должен просто ждать окончания операции (по логике работы программы).
В-третьих, куски кода, выполняющие эти операции, нелегко выделить в обособленный объем, поскольку они сильно переплетены и между собой, и с графическим интерфейсом.



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
1-1093529823
aliced
2004-08-26 18:17
2004.09.12
опять пропала главная панель Делфи


14-1092983461
Dimka Maslov
2004-08-20 10:31
2004.09.12
Юридическая задача


1-1093514540
Garry
2004-08-26 14:02
2004.09.12
Скопировать лист в книге Excel


14-1093409534
rok
2004-08-25 08:52
2004.09.12
Что означает Sys Rq на клавише Print Screen?


1-1093511951
ksa2002
2004-08-26 13:19
2004.09.12
Проблема с DateTimePicker