Простой пример того, как сделать так что бы фору нельзя было перетащить за пределы экрана. Делается это всего лишь при помощи одной процедуры. Итак, поехали: Открываем Delphi, создаем новый проект, после ключевого слова public пишем: Code procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; Далее нажимаем комбинацию клавиш CTRL+SHIFT+C Delphi создаст шаблон для нашей процедуры. Я её уже дописал, поэтому посмотрите что получилось у меня и добавьте к себе в код недостающие строки: Code 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; Вот и все ! Запустите программу и попробуйте перетащить форму за пределы экрана. Если не получиться то значит, вы всё сделали верн
|