Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

изменение размеров формы [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]

Желание угодить любого рода капризам юзера ведет в тупик.

К тому же управление св-вами отображения интерактивно перемещаемых юзером окон имеет программный интерфейс, так что изобретение своего собственного велосипеда с "пунктиром" вряд ли имеет  смысл)


Наверх

Титульная страница Поиск, карта сайта Написать письмо