Главная страница
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.038 c
14-1090263886
Baron
2004-07-19 23:04
2004.08.08
Слово о сидюке.


3-1089890105
СергейГ
2004-07-15 15:15
2004.08.08
Не читаются русские буквы в таблице FoxPro


3-1089642536
Viz
2004-07-12 18:28
2004.08.08
Дублирующиеся записи в таблице


4-1088476272
GrayFace
2004-06-29 06:31
2004.08.08
Аналоги хуков; как узнать все API функции, которые вызывает прога


14-1089871743
Мыкола Бондаренко
2004-07-15 10:09
2004.08.08
Сало в шоколаде