![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
изменение размеров формы [D2005, XP]
simkas © (2007-11-22 15:23:00)Подскажите пожалуйста как реализовать, что бы при изменении размеров формы на десктопе прорисовывался пунктиром лишь контур нового размера, а сами размеры формы изменялись бы после отпускания кнопки.
Понимаю что тупо сформулировал, но надеюсь понятно что нужно ;)
трабла в том, что весит обработчик на onResize где я подгоняю положения winControl'ов и постоянная прорисовка их мерцает.
спасибо!
misha_gr (2007-11-22 17:36:00) [1][9] - ай, молодца!
misha_gr (2007-11-22 17:30:00) [2]Отставить! Исчё одна возможность. Блокировать отрисовку окна, пока ты там поперетряхиваешь свою похрень. Типа так:
LockWindowUpdate(MainForm.ClientHandle);
try
// Подгоняешь свои контролы куда надоть
finally
LockWindowUpdate(0);
end;
или WM_SETREDRAW.
simkas (2007-11-22 17:27:00) [3]нашел!
procedure WMNCMLButtonDown(var Message: TMessage);
const
EnableFulDrag: UINT = 0;
var
TmpBool: UINT;
begin
SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @TmpBool, 0);
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, EnableFulDrag, nil, 0);
inherited;
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, TmpBool, nil, 0);
end;
misha_gr (2007-11-22 17:22:00) [4]Красный флаг в руки и поезд на встречу. Сделаешь расскажешь.
Поиграйся с WM_SIZE. Хотя, возможно, придётся лезть и глубже...
simkas (2007-11-22 16:40:00) [5]2misha_gr: я же пользователя не могу заставлять выбирать оформление что бы мне подходило ;)
simkas (2007-11-22 16:32:00) [6]нет!
посмотрите хотя бы в винампе как происходит прорисовка при изменении размеров плайлиста - именено пунктиром пока не закончен выбор нового размера пользователем и свойства винды тут не причем.
у меня и стоит сейчас отработка на FormCanResize.
морду формы собираю из картинок, некоторые при изменении формы подгоняются под новые размеры. в строго определенных позициях находятся элементы типа кнопок и т.п. которые также при изменении размеров нужно подогнать. что бы я ни делал да и по-моему в любом случаи избежать мерцания невозможно.
я вот вспомнил сейчас про модерн скин винампа, посмотрел и точно, они там вначале контур нового размера только показывают.
вот как бы такое реализовать... *dont_know*
misha_gr (2007-11-22 16:00:00) [7][4] Ресайза на месте это тоже касается.
Reindeer Moss Eater (2007-11-22 15:46:00) [8]перетаскивание здесь вообще не упоминается. речь про ресайз на месте.
misha_gr (2007-11-22 15:40:00) [9]Как человек интеллигентный скажу: Тю! Оно ж переключается централизованно для всей Винды!
Настройка-Панель управления-Экран-Оформление-Эффекты-Отображать содержимое окна при перетаскивании (Сбросить флажОк)-Ok-Применить.
Согласен с [2] - разбираться будешь месяц - нет никакого смысла.
цц (2007-11-22 15:33:00) [10]сделай продгонку по условию окончания ресайза, а не в процессе
или отключи в свойствах экрана перерисовку окна
или помести вде доброна панель, которую перед ресайзом выключай (и не перерисовывай), а после - включай
Сергей М. (2007-11-22 15:31:00) [11]Желание угодить любого рода капризам юзера ведет в тупик.
К тому же управление св-вами отображения интерактивно перемещаемых юзером окон имеет программный интерфейс, так что изобретение своего собственного велосипеда с "пунктиром" вряд ли имеет смысл)