Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
1-24540
NorthMan
2003-08-26 19:14
2003.09.08
Народ, как в DateTimePicker программно перейти на


3-24304
Sirus
2003-08-19 07:31
2003.09.08
Что лучше делать: увеличивать количество записей или ???


1-24434
Abikos
2003-08-25 18:48
2003.09.08
вопрос о Frame ах ....


14-24612
Rouse_
2003-08-22 05:58
2003.09.08
Отряд не заметил потери бойца :(


3-24361
Bes
2003-08-17 05:18
2003.09.08
Паралельная работа с БД...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский