Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизМерцание компонент Найти похожие ветки
← →
Кодер © (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c