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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2007, 22:53   #11
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

Ребята, я написал код, но вот за каким событием закритить?

if (Form1.Left>Screen.Width-Form1.Width-15) and (Form1.Left<Screen.Width+15) then Form1.Left:=Screen.Width-Form1.Width;
if (Form1.Left<15 ) and (Form1.Left>-15) then form1.Left:=0;

if (Form1.Top>Screen.Height-Form1.Height-45) and (Form1.Top<Screen.Height-30+15) then Form1.Top:=Screen.Height-Form1.Height-30;
if (Form1.Top<15 ) and (Form1.Top>-15) then form1.Top:=0;

и т.д. и т.п.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 24.12.2007, 23:09   #12
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

По событию:
Код:
TForm1.FormCreate(Sender: TObject);
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 24.12.2007, 23:19   #13
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

не срабатывает, я уже не знаю, какое стандартное событие взять. Скажите тогда пожалуста какое событие отвечает за перемещение объекта?
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 25.12.2007, 10:09   #14
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
TForm1 = class(TForm)
.....................
private
  procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); 
  message WM_WindowPosChanging;
................................
end;
................................
procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
var
  WorkArea: TRect;
  StickAt : Word;
begin
  StickAt:=20; //количество пикселов от края экрана при котором происходит скачок
  SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
  with WorkArea, Msg.WindowPos^ do
    begin
      Right:=Right-cx;
      Bottom:=Bottom-cy;
      if abs(Left-x)   <= StickAt then x:=Left;
      if abs(Right-x)  <= StickAt then x:=Right;
      if abs(Top-y)    <= StickAt then y:=Top;
      if abs(Bottom-y) <= StickAt then y:=Bottom;
    end;
end;

Последний раз редактировалось _Dmitry; 25.12.2007 в 10:28.
_Dmitry вне форума Ответить с цитированием
Старый 05.01.2008, 13:35   #15
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

Спасибо, все работает, но вот проблема
мне надо, чтобы при перемещении перемещалась и вторая форма, причем на столько же пикселей, что и главная.
Я попробовал вписать свой код в эту процедуру, вышла ошибка.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 05.01.2008, 15:03   #16
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

При перетаскивании первой формы, вторая будет перемещаться вслед за первой
Код:
TForm1 = class(TForm)
.....
private
  procedure OnMove(var Msg: TWMMove); message WM_MOVE;
public
end;

var
  dx,dy: integer; //глобальные переменные

procedure TForm1.OnMove(var Msg: TWMMove);
begin
  inherited;
  try
    Form2.Left:=Form1.Left+dx;
    Form2.Top:=Form1.Top+dy;
  except
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  dx:=Form2.Left-Form1.Left;
  dy:=Form2.Top-Form1.Top;
end;
_Dmitry вне форума Ответить с цитированием
Старый 05.01.2008, 15:14   #17
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

спасибо! Н:о я немного не разобрался в предыдущем коде, не могли бы пояснить? мне нужно, чтоб вторая тоже прилипала и к бокам и к первой форме.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 05.01.2008, 15:25   #18
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

dx - смещение между левыми гранями двух форм,
dy - смещение между верхними гранями двух форм.
Анализируйте эти значения и прилепляйте форму.
_Dmitry вне форума Ответить с цитированием
Старый 05.01.2008, 15:27   #19
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

спасибо, попробую.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 13.01.2008, 22:43   #20
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

А как прилипить дочернюю форму к главной? пытался модернизировать код, но не получилось. помогите! В общем мне надо, чтоб две формы главная и дочерняя прилипали к краям экрана, друг к другу и при перемешении главной перемешалась и дочерняя (на столько же пикселей)
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма blackstersl Мультимедиа в Delphi 1 23.08.2008 19:03
Форма Killbrum Помощь студентам 8 21.08.2008 18:48
Форма subsonic Общие вопросы Delphi 5 10.01.2008 11:18
форма... Briz Общие вопросы Delphi 8 22.10.2007 17:26
Форма MAcK Общие вопросы Delphi 4 07.02.2007 01:43