Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Внизизменение размеров формы Найти похожие ветки
← →
simkas (2007-11-22 15:23) [0]Подскажите пожалуйста как реализовать, что бы при изменении размеров формы на десктопе прорисовывался пунктиром лишь контур нового размера, а сами размеры формы изменялись бы после отпускания кнопки.
Понимаю что тупо сформулировал, но надеюсь понятно что нужно ;)
трабла в том, что весит обработчик на onResize где я подгоняю положения winControl"ов и постоянная прорисовка их мерцает.
спасибо!
← →
Сергей М. © (2007-11-22 15:31) [1]Желание угодить любого рода капризам юзера ведет в тупик.
К тому же управление св-вами отображения интерактивно перемещаемых юзером окон имеет программный интерфейс, так что изобретение своего собственного велосипеда с "пунктиром" вряд ли имеет смысл)
← →
цц (2007-11-22 15:33) [2]сделай продгонку по условию окончания ресайза, а не в процессе
или отключи в свойствах экрана перерисовку окна
или помести вде доброна панель, которую перед ресайзом выключай (и не перерисовывай), а после - включай
← →
misha_gr (2007-11-22 15:40) [3]Как человек интеллигентный скажу: Тю! Оно ж переключается централизованно для всей Винды!
Настройка-Панель управления-Экран-Оформление-Эффекты-Отображать содержимое окна при перетаскивании (Сбросить флажОк)-Ok-Применить.
Согласен с [2] - разбираться будешь месяц - нет никакого смысла.
← →
Reindeer Moss Eater © (2007-11-22 15:46) [4]перетаскивание здесь вообще не упоминается. речь про ресайз на месте.
← →
misha_gr (2007-11-22 16:00) [5][4] Ресайза на месте это тоже касается.
← →
simkas (2007-11-22 16:32) [6]нет!
посмотрите хотя бы в винампе как происходит прорисовка при изменении размеров плайлиста - именено пунктиром пока не закончен выбор нового размера пользователем и свойства винды тут не причем.
у меня и стоит сейчас отработка на FormCanResize.
морду формы собираю из картинок, некоторые при изменении формы подгоняются под новые размеры. в строго определенных позициях находятся элементы типа кнопок и т.п. которые также при изменении размеров нужно подогнать. что бы я ни делал да и по-моему в любом случаи избежать мерцания невозможно.
я вот вспомнил сейчас про модерн скин винампа, посмотрел и точно, они там вначале контур нового размера только показывают.
вот как бы такое реализовать... *dont_know*
← →
simkas (2007-11-22 16:40) [7]2misha_gr: я же пользователя не могу заставлять выбирать оформление что бы мне подходило ;)
← →
misha_gr (2007-11-22 17:22) [8]Красный флаг в руки и поезд на встречу. Сделаешь расскажешь.
Поиграйся с WM_SIZE. Хотя, возможно, придётся лезть и глубже...
← →
simkas (2007-11-22 17:27) [9]нашел!
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:30) [10]Отставить! Исчё одна возможность. Блокировать отрисовку окна, пока ты там поперетряхиваешь свою похрень. Типа так:
LockWindowUpdate(MainForm.ClientHandle);
try
// Подгоняешь свои контролы куда надоть
finally
LockWindowUpdate(0);
end;
или WM_SETREDRAW.
← →
misha_gr (2007-11-22 17:36) [11][9] - ай, молодца!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.051 c