Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизИндикатор занятости программы? Подскажите как лучше организовать? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c