Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.044 c
3-1186917248
kirik
2007-08-12 15:14
2007.12.16
проблема с dbf (dbase4) при чтении текстовых полей.


2-1195720465
sia
2007-11-22 11:34
2007.12.16
Все события прекращены?


2-1195558114
San1
2007-11-20 14:28
2007.12.16
формат числа


2-1195299590
Riply
2007-11-17 14:39
2007.12.16
Сортированность объектов, возвращаемых NtQueryDirectoryFile.


2-1195350978
.dn+
2007-11-18 04:56
2007.12.16
Динамическое PopupMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский