Простой пример того, как сделать так что бы фору нельзя было перетащить за
пределы экрана. Делается это всего лишь при помощи одной процедуры. Итак,
поехали:
Открываем 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;
Вот и все ! Запустите программу и попробуйте перетащить форму за
пределы экрана. Если не получиться то значит, вы всё сделали верно!
|