Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Мерцание компонента   Найти похожие ветки 

 
френк   (2005-11-24 17:27) [0]

Есть сложность - при изменении размеров / позиции компонента TImage в run-time происходит очень сильное мерцание. Как можно справиться? неужели нет выхода :(


 
jack128 ©   (2005-11-24 17:53) [1]

Image1.Parent.DoubleBuffered := True;


 
френк   (2005-11-24 18:15) [2]

огромное спасибо ) напрашивается, возможно, дуратский вопрос. задавать в run-time множеству панелей DoubleBuffered:=True выглядит как-то странно. но возникла проблема - в случае если я в конструкторе моей обертки для TImage попробую задать это свойство у парента - получаем AV. даже если ограничить области применение чисто run-time"ом:

constructor TALImagePanel.Create(AOwner: TComponent);
begin
inherited;
FSkinEngine:=nil;
//--
if not (csDesigning in ComponentState) then
 Self.Parent.DoubleBuffered:=True;
//--
end;


 
френк   (2005-11-24 18:22) [3]

я так понял что не все наследники TWinControl поддерживают такую фичу. можно ли определить, поддерживается ли двойная буферизация компонентом-родителем или у меня АВ вылетает по другой причине? ) причину пытаюсь локализовать, пока безуспешно :*(


 
Leonid Troyanovsky ©   (2005-11-24 18:35) [4]


> френк   (24.11.05 18:22) [3]

> по другой причине? ) причину пытаюсь локализовать, пока
> безуспешно :*(


Во время создания контрола у него еще нет парента.
Поэтому, такие вещи могут пройти лишь после приобретения оного.
Например, в procedure SetParent; override;

--
Regards, LVT.


 
френк   (2005-11-24 18:37) [5]

прошу прощение что "рожаю" посты, просто нету возможности редактировать предыдущие (

понял, что каким то образом в результате установа флага DoubleBuffered (а по другому тут никак не назовешь) у родителя - возникает процесс умервщления (вызов метода Destroy) у моего только начавшего свое создание компонента. В результате ошибка при чтении памяти или некорректная работа с указателем -> AV. Где же тогда устанавливать сей флаг, если я хочу автоматизировать процесс?


 
френк   (2005-11-24 18:40) [6]

Leonid Troyanovsky ©   (24.11.05 18:35) [4]
огромное спасибо "отцу" ) буду разбираться. спасибо!


 
френк   (2005-11-24 18:45) [7]

и снова имеем AV :(

procedure TALImagePanel.SetParent(AParent: TWinControl);
begin
inherited;
//--
if not (csDesigning in ComponentState) then
 AParent.DoubleBuffered:=True;
end;

вроде парент есть :(


 
GuAV ©   (2005-11-24 18:49) [8]

френк   (24.11.05 18:45) [7]

А если добавить
if AParent <> nil then


 
френк   (2005-11-24 19:00) [9]

пробовал. все равно вываливается на AV. при вызове DubleBuffered->True, уходит на уничтожение TALImagePanel, как я и говорил =( протрассировать момент после DoubleBuffered->True не получается =(


 
OldNaum ©   (2005-11-24 19:44) [10]

все, прошу прощение. вываливалось в случае, если парентом была форма почему-то. пытаюсь сейчас себе объяснить "почему?" :)



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1132970678
Separator
2005-11-26 05:04
2005.12.18
Z преобразование, если сможете, помогите


2-1133766692
RealMan
2005-12-05 10:11
2005.12.18
Проблема с Media Player -ом. При открытии *.AVI файлов.


2-1133344518
Piero
2005-11-30 12:55
2005.12.18
алгоритм поиска элемента в массиве


1-1132210437
DimonDimon
2005-11-17 09:53
2005.12.18
Иконки и картинки для кнопок


6-1126183852
CARABAS
2005-09-08 16:50
2005.12.18
Как обратиться к реестру по сети?