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

Вниз

Фрейм мелькает   Найти похожие ветки 

 
REA   (2007-09-21 14:47) [0]

Создаю в run-time фрейм с выравниваением alClient, устанавливаю Parent := Panel. Фрейм сначала появляется на панели и только потом выравнивается. Из за этого получается мелькание. Эксперименты с Visible ни к чему не привели. Как избавиться от мелькания?


 
DVM ©   (2007-09-21 14:50) [1]


> Как избавиться от мелькания?

попробуй вручную задать размер равный размеру панели и лишь потом выравнивание


 
REA   (2007-09-21 14:54) [2]

Да вроде можно, но придется еще одну панель тогда сделать (потому как на той не один этот фрейм). Уже была такая мысль.
А запретить ему мелькать никак на время выравнивания?


 
Ega23 ©   (2007-09-21 14:56) [3]


> А запретить ему мелькать никак на время выравнивания?


Пожалуй никак.


 
homm ©   (2007-09-21 15:01) [4]

> [2] REA   (21.09.07 14:54)
> А запретить ему мелькать никак на время выравнивания?

Есть зверски оригинальное решение, подходящее в твоем случае. Создаешь форму, размерами такими-же как твоя, делаешь поверх своей основной, потом создаешь фрейм, уничтожаешь форму. Фишка в том, что-бы перехватывать все сообщения WM_PAINT WM_ERASEBKGND для этой формы, и на ней ничего не бцдет рисоватся.


 
homm ©   (2007-09-21 15:04) [5]

Вот демка в тему:
http://kolmck.net/demos/DemoNoFlicks.zip


 
REA   (2007-09-21 16:27) [6]

Ну это действительно зверски... я как то уже сделал как в [1]. Приемлемо вроде. WM_ERASEBKGND перехватил для панели на которой рисуется - так поменьше заметно мелькание


 
REA   (2007-09-21 16:29) [7]

До этого хотел сделать TPageControl с динамически пересоздаваемыми страницами - вообще ужасно мелькает даже без фреймов. Помучался, отказался от этой идеи. Может с формой и не самая абсурдная мысль.


 
Суслик ©   (2007-09-21 16:44) [8]

вообще не должно мелькать то.
у меня все в динамике - ничего не мелькает.


 
REA   (2007-09-25 10:41) [9]

Наткнулся тут еще на трюк - при создании делают изначально нулевой размер (фрейма, панели и т.п.)


 
Котик Б   (2007-09-26 10:15) [10]

Еще актуально ?


 
REA   (2007-09-26 10:27) [11]

Может пригодиться - если есть информация, давай


 
Котик Б   (2007-09-26 11:14) [12]

Я делал так:

// На начало операции в главное окно выведен фрейм с Align = alClient
// И создан дополнительный фрейм которым нужно заменить текущий активный
// Используется в главной форме property ActiveFrame: TFrame read FActiveFrame write FActiveFrame;
// У всех фреймов установлен Align = alClient независимо от того какого размера они в design-time

 LockWindowUpdate(Parent.Handle); // Тут хендл окна куда будем выводить активный фрейм
 ActiveFrame.Hide(); // Прячем текущий
 Sleep(100); // Впринципе не нужен - но этим достигается приятное психологическое восприятие, оптимальный диапазон 50-150
---
тут несколько опраторов для переназначения активного фрейма и назначения парентов - если не указал ранее
---
 ActiveFrame.Show(); // Уже новый активный фрейм - старый сохранён в стеке
 LockWindowUpdate(0);


 
REA   (2007-09-26 14:35) [13]

LockWindowUpdate это тяжелая артилерия. Одно окно может быть только заблокировано и я опасаюсь эту функцию использовать.


 
Котик Б   (2007-09-26 15:05) [14]


> LockWindowUpdate это тяжелая артилерия. Одно окно может
> быть только заблокировано и я опасаюсь эту функцию использовать.
>


У тебя во время смены фреймов что-то рисуется ?
У меня нет - да и при показе нового фрейма стараюсь ничего не считать.
А если бы нужно было что-то пересчитывать - то засунул бы в паралельный поток.


 
REA   (2007-10-05 15:18) [15]

Да нет конечно, но конкретно эта функция влияет и на другие приложения похоже.



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

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

Наверх




Память: 0.5 MB
Время: 0.025 c
2-1195933899
riko
2007-11-24 22:51
2007.12.23
Клиент сервер


15-1195932949
lookin
2007-11-24 22:35
2007.12.23
Наконец-то вопрос по теме сайта))


2-1195897949
WebSQLNeederr
2007-11-24 12:52
2007.12.23
Использование ini для загрузки настроек програмы


1-1191747484
integery
2007-10-07 12:58
2007.12.23
как открить документ не сохраняя, если он в TMemoryStream


2-1196315820
ryden
2007-11-29 08:57
2007.12.23
проблема с MDI приложением