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

Вниз

Как узнать, что форму перемещают ?   Найти похожие ветки 

 
Miau ©   (2004-01-23 19:58) [0]

Хочется не дать форме уйти за пределы некоего прямоугольника, т.е. не дать пользователю мышью перетащить её куда не следует.


 
Юрий Зотов ©   (2004-01-23 20:31) [1]

WM_WINDOWPOSCHANGING

В структуре WINDOWPOS проверяем и корректируем координаты (либо выставляем флаг SWP_NOMOVE), потом вызываем inherited (либо не вызываем - тогда сообщение не будет обработано).


 
Miau ©   (2004-01-23 20:45) [2]

Спасибо!
Если Вам не трудно, не могли бы Вы набросать примерчик небольшой? Хотя бы пару основных строк, а то я с сообщениями толком не сталкивался.


 
Юрий Зотов ©   (2004-01-23 22:16) [3]

type
 TForm1 = class(TForm)
 private
   procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
   procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
 end;

implementation

const
 Margin = 100; // Недоступная рамка по краям экрана

procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
// Это ограничивает разворачивание формы
begin
 with Message.MinMaxInfo^, Screen do
 begin
   ptMaxSize := Point(Width - 2 * Margin, Height - 2 * Margin);
   ptMaxPosition := Point(Margin, Margin)
 end;
 inherited
end;

procedure TForm1.WMWindowPosChanging(var Message: TWMWindowPosChanging);
// Это ограничивает перемещение формы и изменение ее размеров
begin
 with Message.WindowPos^, Screen do
 begin
   if CX > Width - 2 * Margin then CX := Width - 2 * Margin;
   if CY > Height - 2 * Margin then CY := Height - 2 * Margin;
   if X < Margin then X := Margin;
   if X + CX > Width - Margin then X := Width - Margin - CX;
   if Y < Margin then Y := Margin;
   if Y + CY > Height - Margin then Y := Height - Margin - CY
 end;
 inherited
end;


 
Miau ©   (2004-01-23 22:35) [4]

Ещё раз спасибо. Это как раз то, что нужно. Мышь, конечно, непривычно себя ведёт, но это уже другая история :)



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
6-1075314929
Maxim Volobuev
2004-01-28 21:35
2004.04.04
Web-страница c UNICODE


7-1074246438
lhs7fy
2004-01-16 12:47
2004.04.04
Как подождать завершения приложения


4-1074541738
Vik_Mix
2004-01-19 22:48
2004.04.04
Прозрачная форма и StayOnTop


6-1074693713
zxc
2004-01-21 17:01
2004.04.04
про send


1-1079610606
Marser
2004-03-18 14:50
2004.04.04
Межплатформенный перенос