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

Вниз

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

 
Кодер ©   (2005-01-04 20:29) [0]

У меня две проблемы, которые сводятся к одному:

Проблема 1. При перемещении компонент TPanel, TLabel и прочих по форме, они начинают мерцать.
Проблема 2. При изменении размера формы (при выполнении приложения естественно), компоненты (TPanel, TLabel и прочие) на форме тоже соответственно меняют свои размеры и при этом они начинают мерцать.
Много чего попробовал, но эффект не изменился.


 
P.N.P. ©   (2005-01-04 20:36) [1]

TForm.DoubleBuffered:=true
не пробовал?


 
olookin ©   (2005-01-04 20:54) [2]

Насчет ПРОБЛМЕА 1 - как и сказал P.N.P, DoubleBuffered

Насчет ПРОБЛЕМА 2 - сомнительно как-то, почему так...


 
Кодер ©   (2005-01-04 21:08) [3]


> olookin

сам удивляюсь, но факт есть факт


 
olookin ©   (2005-01-04 21:09) [4]

[3] Кодер ©   (04.01.05 21:08)

Может на OnResize срабатывает что?


 
Кодер ©   (2005-01-04 21:35) [5]

DoubleBuffered:= TRUE помогает, но тогда возникают еще два вопроса:
1. Это единственный способ?
2. Ситуация - Label1: TLable находится прямо на форме, также на форме есть Panel1: TPanel, а на панеле находится еще один  Label2: TLabel, так вот необходимо ставить Form1.DoubleBuffered:= TRUE и Panel1.DoubleBuffered:= TRUE, незя как-нить это одной строкой описать? то бишь покороче?


 
Кодер ©   (2005-01-04 21:36) [6]


> olookin

в обработчике OnResize происзодит просто перерасчет размеров объектов и больше ничего


 
olookin ©   (2005-01-04 21:55) [7]

[6] Кодер ©   (04.01.05 21:36)
Для проблемы 1 DoubleBuffered - единственный (как мне кажется) способ, за исключением переписи компонента.

в обработчике OnResize происзодит просто перерасчет размеров объектов и больше ничего

А что под этим имеется в виду?


 
Кодер ©   (2005-01-04 21:58) [8]


> olookin

ну к примеру высчитывается положения того же самого Label1

Label1: TLable находится прямо на форме, также на форме есть Panel1: TPanel, а на панеле находится еще один  Label2: TLabel, так вот необходимо ставить Form1.DoubleBuffered:= TRUE и Panel1.DoubleBuffered:= TRUE, незя как-нить это одной строкой описать? то бишь покороче?

А как это избежать?


 
olookin ©   (2005-01-04 22:06) [9]

[8] Кодер ©   (04.01.05 21:58)

Не понимаю я твоей проблемы...


 
Кодер ©   (2005-01-05 00:34) [10]


> olookin

Объясняю:
если изменить свойство Form.DoubleBuffered:=true, то оно будет распространяться только на объекты, которые располагаются непосредственно на форме, а если объект, который мерцает :-) располагается на панеле, а панель уже на форме, то на объект, располагающийся на панеле свойство Form.DoubleBuffered:=true уже не действует! т.е. это свойство действует напосредственно только на своих прямых потомков!


 
olookin ©   (2005-01-05 01:10) [11]

[10] Кодер ©   (05.01.05 00:34)

А разве а TPanel нет DoubleBuffered? Мне казалось, что есть...


 
Кодер ©   (2005-01-05 15:26) [12]

Да есть конечно же!!! Но если таких панелей на форме 2, 3, ...10??? То придется ДЛЯ КАЖДОЙ панели указывать DoubleBuffered:= TRUE! Вот в этом и заключается мой вопрос - незя ли как-нить ОДНОЙ командой выставить это свойство у ВСЕХ объектов формы?


 
KSergey ©   (2005-01-05 15:32) [13]

> [12] Кодер ©   (05.01.05 15:26)
> 3, ...10??? То придется ДЛЯ КАЖДОЙ панели указывать DoubleBuffered:=
> TRUE! Вот в этом и заключается мой вопрос - незя ли как-нить
> ОДНОЙ командой выставить это свойство у ВСЕХ объектов формы?

Одной строчкой - нет. Ну если не вытягивать все в одну строку, конечно.


 
Кодер ©   (2005-01-05 15:34) [14]

:-)
Жаль...


 
ssk ©   (2005-01-05 15:38) [15]

>Кодер

как вариант (возможно не лучший), прогони в цикле все панели да и выстави нужные свойства


 
olookin ©   (2005-01-05 17:11) [16]

Так действительно в цикле

for i:=0 to Application.ComponentCount-1 do //это количество форм
 for j:=0 to Application.Components[i].ComponentCount-1 do // это как я полагаю, количество контролов на i-й форме
   if Application.Components[i].Components[j] is TPanel then //а это сам комопнент...



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
14-1104957025
Мазут Береговой
2005-01-05 23:30
2005.01.23
Нужен совет по t-sql.


4-1101814088
pavel_guzhanov
2004-11-30 14:28
2005.01.23
Определение монитора с помощью WMI


1-1105423942
syte_ser78
2005-01-11 09:12
2005.01.23
прогрессбар на статусной строке


4-1102015586
Neiron
2004-12-02 22:26
2005.01.23
Удаление секций из PE файла


1-1105030782
Zaurr
2005-01-06 19:59
2005.01.23
Клонирование