Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.017 c
2-1195712844
validoll
2007-11-22 09:27
2007.12.16
Не могу установить компонент.


1-1189937206
sdubaruhnul
2007-09-16 14:06
2007.12.16
Общий паттерн нескольких строк


2-1195414150
WFS
2007-11-18 22:29
2007.12.16
Наивный вопрос: как остановить цикл for?


1-1190905720
Lamer666
2007-09-27 19:08
2007.12.16
TreeView.OnEdited


15-1195090718
Riply
2007-11-15 04:38
2007.12.16
Разделы на CD/DVD - диске.




   Наверх