![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запрет на движение формы
Максим © (2008-01-24 19:40:00)Можно ли как-нибудь запретить перемещение формы за пределы экрана.
Т.е. двигаю форму и как только край хочет перевалить за экран,то не пускать ее, будто там стенка :)
Максим (2008-01-24 20:24:00) [1]воткнул уже:)
if x< rWorkArea.left then
x :=rWorkArea.left;
Максим (2008-01-24 20:21:00) [2]это для того чтобы окно прилипало к краям, а мне нужно запретить двигать за края
antonn (2008-01-24 19:53:00) [3]
TMainForm = class(TForm)
protected
procedure WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING);
message WM_WINDOWPOSCHANGING;
procedure TMainForm.WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING);
var
rWorkArea: TRect;
StickAt : Word;
Docked: Boolean;
begin
StickAt := 20;
SystemParametersInfo(SPI_GETWORKAREA, 0, @rWorkArea, 0);
with Msg.WindowPos^ do begin
if ((x <= rWorkArea.left + StickAt)and (x > - StickAt)) then
x := rWorkArea.left;
if ((x+cx-16>=rWorkArea.Right-StickAt)and( x+cx<=rWorkArea.Right+StickAt)) then
x := rWorkArea.Right - cx;
if (y<=rWorkArea.Top + StickAt)and (y>-StickAt) then
y := rWorkArea.Top;
if (y+cy>=rWorkArea.Bottom-StickAt)and(y+cy<=rWorkArea.Bottom+StickAt) then
y := rWorkArea.Bottom - cy;
//x и y - координаты положения формы
end;
inherited;
end;