Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Ограничить области в которой возможно перемещение формы   Найти похожие ветки 

 
AlexanderSK ©   (2003-02-12 13:32) [0]

Подскажите пожалуйста возможно ли при перемещении формы ограничить область в которой пользователь может ее перемещать?
т.е. (y1 < form.top < y2) and (x1 < form.left < x2)

Заранее благодарен!


 
AlexanderSK ©   (2003-02-12 13:59) [1]

А вообще-то это реализовать возможно? Или лучше и не надеяться?


 
Radionov Alexey ©   (2003-02-12 13:59) [2]


type
TForm1 = class(TForm)
private
{ Private declarations }
procedure OnMovingForm(Var MSG : TMessage); message wm_Moving; - обрабатываем перемещение
public
{ Public declarations }
end;
...............................

procedure TForm1.OnMovingForm(var MSG: TMessage);
begin
// Если поехали слишком далеко налево, то жмем стоп-кран
With TRect(Pointer(Msg.Lparam)^) do if Left<100 then Left := 100;
end;





 
Radionov Alexey ©   (2003-02-12 14:08) [3]

Но такой вариант красивее (не портится форточка при езде):

procedure TForm1.OnMovingForm(var MSG: TMessage);
begin
With TRect(Pointer(Msg.Lparam)^) do
if Left<100 then
begin
right := 100 + Right-Left;
Left := 100;
end;
end;

Понтяно, что аналогично можно секвестировать и остатние степени свободы ;)


 
Radionov Alexey ©   (2003-02-12 14:32) [4]

И, наконец, законченный вариант:

Procedure TForm1.OnMovingForm(Var Msg: TMessage);
Procedure Restrict(Var Rect: TRect; Const Dest: TRect);
Function Split(A: Integer): Integer;
Begin
If A > 0 Then Result := A Else Result := 0;
End;
Begin
With Rect Do
Begin
OffsetRect(Rect, Split(Dest.Left - Left), Split(Dest.Top - Top));
OffsetRect(Rect, - Split(Right - Dest.Right), - Split(Bottom - Dest.Bottom));
End;
End;
Begin
Restrict(TRect(Pointer(Msg.LPARAM)^), Rect(100, 100, 1000, 800)); // 100,100,1000,800 - прямоугольник за который не рекомедуется вылазить форме
End;





Страницы: 1 вся ветка

Текущий архив: 2003.02.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
14-76147
luckyMonk
2003-02-07 13:02
2003.02.24
Компоненты


1-76004
Anton.
2003-02-13 10:04
2003.02.24
Формат даты


9-75736
Armageddon
2002-09-14 07:44
2003.02.24
Графика


1-75958
Qual
2003-02-12 14:36
2003.02.24
ВремечкО


9-75737
chistyakov
2002-08-22 15:21
2003.02.24
Может подберет кто :)