Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2012, 01:49   #1
Dissembler7
Пользователь
 
Аватар для Dissembler7
 
Регистрация: 12.03.2012
Сообщений: 12
По умолчанию Перемещение формы в Delphi

Объясните пожалуста как запретить форме выходить за пределы экрана. Или скажите с какими событиями формы для этого нужно работать.
У меня нет решения, но я восхищен красотой проблемы.
Dissembler7 вне форума Ответить с цитированием
Старый 26.03.2012, 02:55   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

собственно что бы Top и Left не были отрицательными... и в суме с длинной и шириной формы не выходили за пределы расширения монитора... события на перемещение формы нету (насколько мне известно) так что придется изощряться... к примеру таймером проверять удовлетворение выше изложенных условий...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.03.2012, 03:01   #3
Dissembler7
Пользователь
 
Аватар для Dissembler7
 
Регистрация: 12.03.2012
Сообщений: 12
По умолчанию

Пробовал с таймером - не то. Форма сильно дергается, а хотелось бы, что бы форму просто нельзя было двигать дальше предела экрана
У меня нет решения, но я восхищен красотой проблемы.
Dissembler7 вне форума Ответить с цитированием
Старый 26.03.2012, 03:07   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

может из этого изощрившись что сделаете... поколдуете с событиями...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.03.2012, 07:54   #5
СТРАННИК
Пользователь
 
Аватар для СТРАННИК
 
Регистрация: 20.12.2006
Сообщений: 43
По умолчанию

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

Код:
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;
Если бы я был на столько умён, чтобы ответить на все вопросы самостоятельно, я бы не спрашивал...
СТРАННИК вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение формы Claster Помощь студентам 5 11.04.2011 19:05
перемещение формы Черничный Общие вопросы Delphi 11 10.12.2009 11:06
Перемещение формы??? lionman Общие вопросы Delphi 20 22.04.2009 17:43
перемещение формы CraZZy RabbIt Общие вопросы Delphi 1 16.03.2009 01:38
Delphi, перемещение формы. north Помощь студентам 3 23.01.2008 22:34