Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 12:10   #1
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию Как принудительно перерисовать форму.

1. программа в delphi 7
2. есть 1 форма в программе.
3. используется компонент delphiX, а точнее 20 AnimatedImage и 6 RxSwitch.
4. при установлении компонента AnimatedImage в свойстве Activate=true на форме перестают перерисовываться элементы Shape и Label. (тоесть если форму закрыть каким либо окном, а потом сдвинув это окно посмотреть на форму, то на ней ничего нет кроме компонентов AnimatedImage и RxSwitch, так же можно свернуть форму и развернуть её, эффект тот же).
5. Если делать анимацию "не стандартным способом", тоесть просто повесить на форму стандартный таймер и в обработке изменять номер отображаемой картинки анимации, то форма отображается нормально. данный глюк хоть и присутствует но проявляется только изредка. интервал события таймера и интервал в AnimatedImage одинаковые и = 40. Пробовал ставить 100, ситуация не менялась.
6. Как принудительно обновить форму, пусть даже по таймеру?
7.пробовал ставить на форму таймер с интервалом 1000 и в событии писать
Код:
  form1.Refresh;
  form1.UpdateActions ;
  form1.Update;
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 23.04.2009, 12:55   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Попробуйте
Код:
Form1.Repaint;
Или
Код:
Application.ProcessMessages;
Если не поможет, то можете попробовать перерисовывать не всю форму, а только объекты на ней. К примеру:
Код:
Label1.Refresh;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 23.04.2009, 14:34   #3
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

вобщем как ни странно помог
Код:
Form1.Repaint;
Но так как появляется мерцание, то поступил немного по другому.

Поставил 2 таймера один обрабатывает объекты AnimatedImage для анимации с интервалом 60, а другой с интервалом 5-10 секунд обновляет форму. тогда мерцание не бросается в глаза.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Title на форме. Как можно перерисовать caption на form? Или убрать его и вместо использовать картинки Шульц Общие вопросы Delphi 37 02.10.2010 09:46
Как обновить\перерисовать рисунок на форме или компоненте? Selebro Общие вопросы C/C++ 1 21.12.2008 21:16
Как скрыть форму Михаил Юрьевич Общие вопросы Delphi 2 01.06.2008 15:37
Как сделать форму? HAMMAN Помощь студентам 1 29.01.2008 22:11
Как изменить стандартную форму на форму любой сложности QwErEn Общие вопросы Delphi 9 08.06.2007 11:44