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

Вниз

Перерисовка окна   Найти похожие ветки 

 
Paladin ©   (2003-08-27 12:52) [0]

Перерисовка окна

Жутко колбасит контролы на окне, во время его переисовки, вызваной изменением размеров формы.
Господа, помогите избавиться от этого жуткого "прыганья" контролов!

Имеется форма, с закругленными углами.
Написана своя панель (наследник то TCustomPanel).
Панель также имеет закругленные углы, да еще и свою отрисовку - довольно сложную.
В результате панель выглядит как объемная с плавными градиентами по краям.

Форма состоит из этих панелей. Одни вложены в другие.
Все панели выравниваються и якоряться.
На панелях располоджены контролы, например, TDrawingGrid

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

Всяческие DoubleBuffered не помогают.
Если запретить отрисовку окна при помощи LockWindowUpdate, то все работает нормально, за исключением того,
что все остальные окана начинают перерисовываться, т.е. при изменении размеров формы, несколько раз перерисовываются весь рабочий стол.
Такой вариант не подходит.

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

Помогите, господа!


 
Paladin ©   (2003-08-27 18:27) [1]

Эта задача сразу появляется, когда необходимо немного разукрасить окна...


 
Anatoly P   (2003-08-27 18:47) [2]

Пробовал .DoubleBuffered ?



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
14-24655
Jacob
2003-08-20 18:04
2003.09.08
Что такое - %20 ???


3-24339
Vitaliy33
2003-08-13 13:25
2003.09.08
Текстовые таблицы


14-24674
NAlexey
2003-08-20 09:33
2003.09.08
Фень Юань?


14-24662
Карелин Артем
2003-08-20 15:56
2003.09.08
Почему сервис не может работать с модулем Filectrl?


8-24561
LK
2003-05-12 16:26
2003.09.08
Midi API