Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

изменение размеров формы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1195145218
Сусл
2007-11-15 19:46
2007.12.16
Как определить, кто препятствует отключению USB-HDD


2-1195464068
DVM
2007-11-19 12:21
2007.12.16
Помогите с SQL запросом.


2-1195404780
Арсен
2007-11-18 19:53
2007.12.16
Свой компонент Grid, наследуемый от TStringGrid


2-1195745591
Fraider
2007-11-22 18:33
2007.12.16
Лист бокс со скошенным углом


15-1195062078
Dark
2007-11-14 20:41
2007.12.16
Дополнительные символы