Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 488

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Как установить у Timage свойство DoubleBuffered

С уважением, Авдошин Алексей Витальевич

Авдошин Алексей Витальевич Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Авдошин Алексей Витальевич (статус: Посетитель)
Вопрос отправлен: 16 апреля 2007, 18:34
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Dron

Здравствуйте.
Свойство DoubleBuffered (Boolean) есть только у формы. У всех остальных компонент его нет. Оно автоматически применяется ко всему, что этой форме принадлежит. Поэтому следует написать так:
Form1.DoubleBuffered:=True;
И сделать это достаточно всего один раз - как правило, при запуске программы, т.е. на событии OnCreate() формы. Свойство действительно убирает мерцание при анимации. Пусть и не полностью, но результат очень заметен.
Желаю удачи!

Ответ отправил: Dron (статус: Студент)
Время отправки: 16 апреля 2007, 19:01

Ответ #2. Отвечает эксперт: min@y™

Свойство DoubleBuffered есть не только у формы, а у всех классов, наследованных от TWinControl. Если TImage лежит, к примеру, на TPanel, то можно поставить Panel.DoubleBuffered:= True;

В приложении оставляю функцию установки свойства DoubleBuffered всех оконных компонентов, лежащих на компонентое Parent, включая его самого.

Приложение:
  1. procedure SetDoubleBuffered(Parent: TWinControl; const DoubleBuffered: Boolean);
  2. var
  3. Control: TControl;
  4. Index: Integer;
  5. begin
  6. if not Assigned(Parent)
  7. then Exit;
  8. Parent.DoubleBuffered:=DoubleBuffered;
  9. for Index:=0 to Parent.ControlCount-1 do
  10. begin
  11. Control:=Parent.Controls[Index];
  12. if Control is TWinControl
  13.  
  14. end;
  15. end;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 17 апреля 2007, 08:21


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 16 апреля 2007, 19:34; участников в обсуждении: 2.
Авдошин Алексей Витальевич

Авдошин Алексей Витальевич (статус: Посетитель), 16 апреля 2007, 19:11 [#1]:

Я не занимаюсь анимацией, я просто таскаю компонент за мышью.При движении компонента по форме остается след от рисунка(в случае Form1.DoubleBuffered:=True;)
Dron

Dron (статус: Студент), 16 апреля 2007, 19:34 [#2]:

Хм. Но вообще-то без необходимости включать это свойство не нужно... Оно не для этих целей. Перетаскивание компонент должно нормально осуществляться. Может проблема в коде перетаскивания?
С уважением.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.03 сек.