Здравствуйте, Paladinm, Вы писали:
P>Здравствуй, Paladinm, Мы писали:
P>>Например, при увеличении размеров формы вправо, во время самого процесса, панели еще не успевают перерисоваться, а контролы уже успевают.
P>>Получается эффект, как будто контролы вылазят за границы формы.
P>>Предполагаю, что во время изменения размеров окна, вместо одного просчета будущего расположения контролов, с учетом выравниваний и якорей, и одной их финальной отрисовкой, происходит многократная перериовка контролов при выравнивании.
P>Нашел не очень красивое решение (на этом же форуме...)
P>Размер окна я изменяю при помощи MoveWindow( ...)
P>Так вот, всем контролам, которые колбасятся делаем WM_SETREDRAW:
P>P>SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 0, 0); // отмена перерисовки
P>MoveWindow( Handle, ...) // изменяем размеры окна
P>SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 1, 0); // включение перерисовки
P>InvalidateRect( KolbasaCtrl.Handle, 0, false ); // рисуем контрол
P>
P>- И все, после этого колбаса заканчивается.
P>Конечно, лучше бы в память все контролы отрисовывать...
P>Может кто-то знает как?
Form->PaintTo(Bitmap->Canvas, 0, 0);
Form->Canvas->Draw(0, 0, Bitmap);
А перед этим создаёшь Bitmap типа TBitmap.

... << RSDN@Home 1.1 beta 1 >>