Главная страница
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.052 c
14-1078648724
juiceman
2004-03-07 11:38
2004.04.04
остановить сервис


14-1077491088
Soft
2004-02-23 02:04
2004.04.04
Святая вера в науку!!!


14-1078759110
TUser
2004-03-08 18:18
2004.04.04
Корреляции


3-1078412500
Евген
2004-03-04 18:01
2004.04.04
Проблема с Locate


6-1074585782
KIE
2004-01-20 11:03
2004.04.04
Два компа по удаленке ...