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

Опубиковано: 30.12.2008 г., автор: , просмотров: 27809

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

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

Открываем 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;

Вот и все ! Запустите программу и попробуйте перетащить форму за пределы экрана. Если не получиться то значит, вы всё сделали верно!

До встречи DelphiExpert.ru !!!



Похожие материалы

    Последние из рубрики

    Игорь 24 Jun 2010 в 00:00 #
    все нормально Владимир продолжайте в таком же духе!!!!
    ЛОЛОЛО 18 Dec 2009 в 00:00 #
    Как открыть Delphi
    Barabashka 20 Oct 2009 в 00:00 #
    Tol9n ты наверно хотел сказать не умные а тупые :)
    YAzON 14 Aug 2009 в 00:00 #
    Хм, а можно ли с помощью этой процедурки сделать так что бы форма не уходила не за рамки экрана а скажем за рамки другого компонента? Имеется ввиду конечно же модально вызванная форма... Которая должна оставаться в границах скажем компоненты Panel?
    325676 08 Aug 2009 в 00:00 #
    Да, при использовании материалов с сайта ссылка на нас обязательна(см внизу страницы).Ну а как начсчет ссылок на другие сайты?

    ОтменитьДобавить комментарий