Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.098 c
3-1092640964
yaric
2004-08-16 11:22
2004.09.12
Скрипт для всех таблиц в БД


14-1093464569
NailMan
2004-08-26 00:09
2004.09.12
Генератор имен


4-1091291087
Hyboid
2004-07-31 20:24
2004.09.12
Поток консольного приложения


1-1093202714
mefisto
2004-08-22 23:25
2004.09.12
Как зделать меню типа Пуск->Программы


1-1093523375
ОлегО
2004-08-26 16:29
2004.09.12
Ввод данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский