|
51 / 51 / 13
Регистрация: 05.06.2008
Сообщений: 139
|
|
Анимация ожидания17.05.2010, 01:04. Показов 10814. Ответов 30
Метки нет (Все метки)
У меня в приложении есть длительные процессы, например подключение к удаленной базе данных, обычно в таких случаях я вывожу надпись типа "ждите", в этот раз я решил вывести gif-анимацию в TImage, но она во время выполнения процесса останавливается, пробовал играться с дочерним процессом - тоже не помогло, может кто подскажет как ее оживить во время выполнения процесса?
0
|
|
| 17.05.2010, 01:04 | |
|
Ответы с готовыми решениями:
30
Потоки и таймеры ожидания Задать время ожидания на чтение файла
|
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|||
| 04.02.2011, 01:00 | |||
|
В общем, будет время - посмотрю, что можно сотворить со StringGrid'ами в потоках... Окей, завтра посмотрю второе приложение под Windows 7 и разберусь в чём же причины...
0
|
|||
|
|
||
| 04.02.2011, 01:06 | ||
- Invalidate() перерисовывает (обновляет) канву. Как-то так .
0
|
||
|
|
||||||
| 07.05.2013, 01:20 | ||||||
|
Попытался проанализировать код MikeSoft:
Писал по первым его исходникам в теме. ( но разница в коде не велика )
Кстати читал где-то недавно что якобы VCL не позволяет перерисовывать часть окна. Стоит заметить что данный момент можно рассматривать как - следствие неправильного распределения задач : логичнее за прорисовку назначить ответственным основной поток, а заполнение массива отдать потоку. А то после завершения потока прорисовывать канву попросту некому. Как вариант решения - использовать канву TImage которая "сохраняет в себе" нарисованное. Если первый пример у меня работает более менее нормально, то второй явно работает как-то неправильно. P.S. Предложение к администрации перенести часть обсуждения из Выход из обработчика onclick сюда как более соответствующие этой теме.
0
|
||||||
|
|
||
| 07.05.2013, 10:33 | ||
|
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 07.05.2013, 12:48 | ||
|
В борланде доступны четыре вида перерисовки большинства компонентов. Вот выдержка из "Освой самостоятельно борланду" Рейсдорфа и Хендерсона (с моим пониманием происходящего):
Invalidate - Запрашивает перерисовку компонента. Компонент будет перерисован Windows при первой возможности. (Перекрашивает прям весь компонент сразу. (отправляет сообщение виндовсу, что неплохо было бы, когда тому будет удобно, обновить вот этот вот компонент) За один проход, избегая мерцания. То есть не перерисовывает по отдельности всякие рамочки, надписи, фон, рисуночки... Скорее всего действует как двойная буферизация, - сперва рисует в буфер, а потом уже сформированный буфер на форме.) Refresh - Запрашивает немедленную перерисовку компонента, стирая перед этим изображение компонента. (Возвращает компонент в первоначальное состояние. Не меняет кисть или шрифт. Берет предыдущее не закрепленное Invalidate-ом или Update-ом состояние и тупо его перерисовывает. Предварительно замазав цветом фона прямоугольник по размерам компонента.) Repaint - Запрашивает немедленную перерисовку компонента. Стирание фона предварительно не производится. (Если не установлено свойство csOpaque (прозрачности), то вызывает Invalidate, затем Update, что гарантирует перерисовку всего компонента, даже тех мест, которые в данный момент скрыты. Если свойство установлено, то только видимую часть.) Update - Вызывает немедленную принудительную перерисовку компонента. (Перерисовывает только те участки компонента, которые были изменены, но сейчас же, принудительно, не дожидаясь виндовой очереди.) А вообще, господа, позвольте влезть к вам со своим монастырем: хочу создать компонент с вычурным графиком, чтобы в реалтайме менялся каждые n секунд. Думал просто создать класс, прикрутить к нему TTimer, завернуть все это в компонент и потом набрасывать на форму миллион таких графиков. Соответственно будет миллион таймеров. А вот вы меня смутили. Все они будут отображаться в потоке главной формы, значит надо именно ему отдавать всю прорисовку. Считаются каждый сам по себе, а прорисовываются все в форме. Все верно?
0
|
||
|
|
||||
| 07.05.2013, 13:51 | ||||
|
0
|
||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||
| 07.05.2013, 14:29 | |||
0
|
|||
|
|
|||
| 07.05.2013, 15:06 | |||
|
Добавлено через 8 минут Добрые люди извлекли картинку. Прямоугольниками подсвечен момент времени, когда форма получает сигнал от таймера и когда поток готов выдать данные? В этом случае однозначно надо организовывать сообщения. Поток посчитал данные, кинул сообщение главному процессу, главный процесс сообщение поймал, данные извлёк, на форму нарисовал. При таком раскладе таймер вообще не нужен
0
|
|||
|
|
||
| 07.05.2013, 15:40 | ||
|
И VCL тут не причем абсолютно, в Qt к примером та же ситуация как я понимаю. Да и при чем тут VCL и Qt ? ведь все определяется WinApi. В WinApi приложении есть оконная процедура в которой обрабатывается событие WM_PAINT котором и делается прорисовка. И что бы рисовать в этом окне из другого окна - придется так же делать синхронизацию так как GDI ф-ции рисования потокобезопастны. То что пример- это лишь пример и так понятно.
0
|
||
|
|
|
| 09.07.2014, 16:10 | |
|
SatanaXIII,
Валерий Фаронов "Искусство создания компонентов Delphi" стр.75 :
2
|
|
| 09.07.2014, 16:10 | |
|
Помогаю со студенческими работами здесь
31
Анимация ожидания
Анимация ожидания ответа ajax запроса Анимация ожидания Ajax ответа на кнопках Анимация в OpenGL, а где собсно, анимация? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|