Запрещаем форме уезжать за пределы экрана

Простой пример того, как сделать так что бы фору нельзя было перетащить за пределы экрана. Делается это всего лишь при помощи одной процедуры. Итак, поехали:

Открываем Delphi, создаем новый проект, после ключевого слова public пишем:


procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;

Далее нажимаем комбинацию клавиш CTRL+SHIFT+C

Delphi создаст шаблон для нашей процедуры. Я её уже дописал, поэтому посмотрите что получилось у меня и добавьте к себе в код недостающие строки:


procedure TForm1.WMMoving(var Msg: TWMMoving);  
var  
workArea: TRect;  
begin  
workArea := Screen.WorkareaRect;  
with Msg.DragRect^ do  
begin  
if Left < workArea.Left then  
OffsetRect(Msg.DragRect^, workArea.Left - Left, 0) ;  
if Top < workArea.Top then  
OffsetRect(Msg.DragRect^, 0, workArea.Top - Top) ;  
if Right > workArea.Right then  
OffsetRect(Msg.DragRect^, workArea.Right - Right, 0) ;  
if Bottom > workArea.Bottom then  
OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom) ;  
end;  
inherited;  
end;  

Вот и все ! Запустите программу и попробуйте перетащить форму за пределы экрана. Если не получиться то значит, вы всё сделали верно!
Теги:
формы
Добавлено: 01 Августа 2018 06:56:59 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...