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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2012, 15:00   #1
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию слипание форм

Добрый день.

Помогите мне в трех соснах разобраться. У меня в проге 3 формы - эти три формы должны слипаться по центру друг с другом если одна находиться на расстоянии 50пик. т.е. есть одну форму подвести к другой то она склеиться по центру первой формы и их можно спокойно(не быстро) двигать по монитору, тогда они не расклеятся - это все просто, я сделал, но вот есть 3 форма и нужно сделать проверку не склеены ли уже две первые. Проверку сделать не могу, уже крыша едет от этого - просто, а не получается у меня во что - если подвести 3-ю форму к уже созданной склейки то она затирает одну из 1-ых двух собой.

Нужно сделать проверку на уже сущ. склейку и добавить туда куда нужно

Код:
procedure TForm1.WMMove(var Msg: TWMMove);
begin
if Assigned(Form2) then
  begin
    if abs(Form1.Left+Form1.Width-Form2.Left)<75 then //влево
     begin
      Form2.Left:=Form1.Left+(Form1.Width div 2);
      Form2.Top:=Form1.Top;
     end;
    if abs(Form2.Left+Form2.Width-Form1.Left)<75 then    //вправо
     begin
      Form2.Left:=Form1.Left-Form2.Width;
      Form2.Top:=Form1.Top;
     end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.Show;
end;
Код:
 
procedure TForm2.WMMove(var Msg: TWMMove);
begin
if abs(Form1.Left+Form1.Width-Form2.Left)<75 then   //вправо
  begin
    Form1.Left:=Form2.Left-Form1.Width;
    Form1.Top:=Form2.Top;
  end;
if abs(Form2.Left+Form2.Width-Form1.Left)<75 then //влево
  begin
    Form1.Left:=Form2.Left+(form2.Width div 2);
    Form1.Top:=Form2.Top;
  end;
end;
Код:
procedure TForm3.WMMove(var Msg: TWMMove);
    begin
     if abs(Form3.Left+Form3.Width-Form1.Left)<75 then //лево
      begin
       Form1.Left:=Form3.Left+(Form3.Width div 2);
       Form1.Top:=Form3.Top;
      end;
     if abs(Form1.Left+Form1.Width-Form3.Left)<75 then    //право
      begin
       Form1.Left:=Form3.Left-Form1.Width;
       Form1.Top:=Form3.Top;
      end;

    if abs(Form2.Left+Form2.Width-Form3.Left)<75 then   //право
     begin
      Form2.Left:=Form3.Left-Form2.Width;
      Form2.Top:=Form3.Top;
     end;
    if abs(Form3.Left+Form3.Width-Form2.Left)<75 then //лево
     begin
      Form2.Left:=Form3.Left+(form3.Width div 2);
      Form2.Top:=Form3.Top;
     end;
     end;

Последний раз редактировалось Глеб1991; 07.06.2012 в 18:52. Причина: ошибки в тексте
Глеб1991 вне форума Ответить с цитированием
Старый 07.06.2012, 17:35   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

вот держи пример (склеивает произвольное число форм, но только слева).
Демонстрация примера.
1 запускаем программу.
2. создаем любое число форм (столько раз нажимаем кнопку)
3. выстраиваем их слева направо с отступами.
4. берем самую правую и начинаем двигать влево.
5. "нанизали" теперь можно таскать как угодно.
6. разбор не предусмотрен.
Вложения
Тип файла: rar 1.rar (3.6 Кб, 8 просмотров)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.06.2012, 18:46   #3
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию

evg_m - спс. сейчас посмотрю
Глеб1991 вне форума Ответить с цитированием
Старый 07.06.2012, 18:48   #4
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию

evg_m - сожалею, но это и рядом не стоит с моей задачкой
Глеб1991 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка форм sem_1989 PHP 5 29.08.2011 13:39
Восстановление форм a_n_n_a Общие вопросы Delphi 2 02.04.2011 03:44
“Слипание” букв в MS Word qaaqasqad Microsoft Office Word 1 09.11.2010 11:42
Слипание 2-х окон AlexeiDelejov Мультимедиа в Delphi 2 19.05.2010 17:07
перерисовка форм dampirik Общие вопросы .NET 4 20.12.2009 10:23