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

Вниз

Приклеивание окон к краям десктопа   Найти похожие ветки 

 
superedward ©   (2004-07-23 07:10) [0]

Алл! Нужно реализовать приклеивание сабжа, но не только при перемещении окна, но и при изменении его размера (как WinAmp),
можа у кого код есть?
Поможите ради всего святого!


 
ИдиотЪ   (2004-07-23 08:14) [1]

а у тебя идеи есть?
хотя бы проверка координат при перемещении и округление до границ при нужной близости


 
Mental_Ray ©   (2004-07-23 09:01) [2]

if form1.Left<50 then form1.Left:=0;
if form1.Left>Screen.Width-50 then form1.Left:=Screen.Width;

Для верха и низа напиши сам.
После этого засунь все это в OnResize формы.


 
Mental_Ray ©   (2004-07-23 09:04) [3]

А эм сорри!
во второй строчечке ошибочка:
if form1.Left>Screen.Width-50 then form1.Left:=Screen.Width-form1.Width;


 
Керик   (2004-07-23 09:04) [4]

Form1.ScreenSnap := True;
Но только для Delphi7!


 
Fynjy   (2004-07-23 09:05) [5]

Есть компонент, сам не смотрел

http://koroan.by.ru/delphi/components/FormMagnet%202.2.zip


 
superedward ©   (2004-07-23 10:38) [6]

To [1]:
Обрабатываю сообщение WINDOWPOSCHANGING:

procedure WMWindowPosChanging(var Msg: TWMWINDOWPOSCHANGING);message WM_WINDOWPOSCHANGING;
begin
if WindowState=wsMaximized then begin
 inherited;
 exit;
end;

if(WindowGlue)then begin{вверх}
  if(Abs(Msg.WindowPos^.Y-DesktopRect.Top)<WindowGlueConst)then begin
   Msg.WindowPos^.Y:=DesktopRect.Top;
  end;

  if(Abs(Msg.WindowPos^.Y-(DesktopRect.Bottom-Msg.WindowPos^.CY))<WindowGlueConst)then begin{вниз}
   Msg.WindowPos^.Y:=DesktopRect.Bottom-Height;
  end;

 end;{if(WindowGlue)then begin}

{дабы размер окна не стал меньше установленного:}
if(Msg.WindowPos^.CX<Constraints.MinWidth)then begin
 if Msg.WindowPos^.X<>OldPosition.Left then Msg.WindowPos^.X:=OldPosition.Right-Constraints.MinWidth;
 Msg.WindowPos^.CX:=Constraints.MinWidth;
end;
if(Msg.WindowPos^.CY<Constraints.MinHeight)then begin
 if Msg.WindowPos^.Y<>OldPosition.Top then Msg.WindowPos^.Y:=OldPosition.Bottom-Constraints.MinHeight;
 Msg.WindowPos^.CY:=Constraints.MinHeight;
end;


To [2,3]: no comment, в OnResize не катит однозначно при включенной опции "Отоборажать содержимое окна при перетаскивании"
в Windows

To [4]: Спасибо, не знал. При перемещении работает хорошо, но при изменении размеров окна тот же глюк, что и у меня: меняется размер с другой стороны окна, за которую не тащишь.
Считаю это однозначно нездоровым явлением.

To [5]: Работает хорошо, перетаскивает; от вышеуказанного глюка избавились просто: при изменении размеров окна не примагничиваются (не лепятся, не приклеиваются)

To All: Так где же у него кнопка? (С)Приключения Электроника



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
6-1086278285
Micah'GF
2004-06-03 19:58
2004.08.08
WinSock: глючит recvfrom


14-1090566156
Mur_r
2004-07-23 11:02
2004.08.08
MS Help Workshop


4-1087279348
Сергей Ю.
2004-06-15 10:02
2004.08.08
Shell в XP


1-1090700722
New Neon
2004-07-25 00:25
2004.08.08
Самоуничтожение программы


4-1088495287
QSpeller
2004-06-29 11:48
2004.08.08
Как сделать всплывающую подсказку в системном трэе в XP?