Питання # 488 …e властивість DoubleBuffered З повагою, Авдошин Олексій Віталійович… (Робота з
Спільнота програмістів Спілкування, допомога, обмін досвідом
Delphi.int.ru Expert
Інші розділи порталу
Перехід до питання:
Статистика за сьогодні:
Найкращі експерти
Питання # 488
Здрастуйте, шановні експерти! Як встановити у Timage властивість DoubleBuffered
З повагою, Авдошин Олексій Віталійович
Відповідь #1. Відповідає експерт:Dron
Вітаю. Властивість DoubleBuffered (Boolean) є тільки у форми. У решти компонентів його немає. Воно автоматично застосовується до всього, що ця форма належить. Тому слід написати так: Form1.DoubleBuffered:=True; І це досить лише один раз - зазвичай, під час запуску програми, тобто. на подію OnCreate() форми. Властивість справді прибирає мерехтіння при анімації. Нехай і не повністю, але результат дуже помітний. Бажаю удачі!
Відповідь #2. Відповідає експерт:min@y™
Властивість DoubleBuffered є не тільки у форми, а й у всіх класів, успадкованих від TWinControl. Якщо TImage лежить, наприклад, на TPanel, можна поставити Panel.DoubleBuffered:= True;
У додатку залишаю функцію встановлення властивості DoubleBuffered всіх віконних компонентів, що лежать на компоненті Parent, включаючи його самого.
- procedure SetDoubleBuffered(Parent: TWinControl; const DoubleBuffered: Boolean);
- var
- Control: TControl;
- Index: Integer;
- begin
- if not Assigned(Parent)
- then Exit;
- Parent.DoubleBuffered:=DoubleBuffered;
- для Index:=0 to Parent.ControlCount-1 do
- begin
- Control:=Parent.Controls[Index];
- ifControl is TWinControl
- end;
- end;
Міні-форум питання
Я не займаюся анімацією, я просто тягаю компонент за мишею. При русі компонента формою залишається слід від малюнка (у випадку Form1.DoubleBuffered:=True
Хм. Але взагалі без необхідності включати цю властивість не потрібно. Воно не для цих цілей. Перетягування компонентів повинно нормально здійснюватися. Може проблема у коді перетягування?