Главная страница
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.05 c
4-1074532367
pavel_k
2004-01-19 20:12
2004.04.04
Получение выделенного участка текста


1-1079185034
Kor@l
2004-03-13 16:37
2004.04.04
Rave


3-1078726512
dimm
2004-03-08 09:15
2004.04.04
Уважаемые мастера помогите реализовать быстрый поиск в базе данны


8-1070322740
SkyRanger
2003-12-02 02:52
2004.04.04
RGB => HSB и обратно


3-1078831907
Владий
2004-03-09 14:31
2004.04.04
Можно ли сделать, чтобы в PopUp меню добавлялись записи (+)