Здравствуйте, Гость
Понедельник, 25.09.2017, 06:52
Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz, Admin 
Форум » Все о Delphi » Программа и интерфейс » Перемещение нескольких форм (одновременно)
Перемещение нескольких форм
XakerДата: Вторник, 05.01.2010, 20:33 | Сообщение # 1
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Приветствую всех кто зашёл в мою тему... в общем у меня проблема, никак ни могу понять или "узнать" каким образом можно перемещать к примеру 2 формы одновременно..?

Причём не за заголовок окна а за Image к примеру..

С одной формой выходит а более никак... dry

 
skycarДата: Вторник, 05.01.2010, 20:51 | Сообщение # 2
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Да просто! Добавить обработчик перемещений формы, и всякий раз, когда он вызывается, перемещать вторую форму)

В секцию private модуля первой формы надо написать

Code

private
   procedure OnMove(var Msg: TWMMove); message WM_MOVE;

И в разделе реализации, после implementation написать

Code

procedure TForm1.OnMove(var Msg: TWMMove); // пишется вручную
begin
   inherited;
  Form2.Left:=Self.Left + 100;
  Form2.Top:=Self.Top + 100;
end;
 
XakerДата: Вторник, 05.01.2010, 21:39 | Сообщение # 3
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
спасибо огромное)) мне такая мысль почему то даже в голову не пришла.. wacko
 
skycarДата: Среда, 06.01.2010, 01:10 | Сообщение # 4
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Ах да, при таком коде будет глючить при старте программы, так как будет идти обращение к форме, которая ещё не успела создаться. Тогда надо ещё добавить глобальную переменную Prepared типа Boolean (будет сообщать, готова или не готова вторая форма).

Code

var  
  Form1: TForm1;
  Prepared: Boolean = False;

А в обработчике OnCreate второй формы написать

Code

procedure TForm2.FormCreate(Sender: TObject);
begin
   Unit1.Prepared:=True; // сообщает о создании формы
end;

И переписать обработчик перемещений первой формы

Code

procedure TForm1.OnMove(var Msg: TWMMove);
begin
   inherited;
   if Prepared then
    begin
     Form2.Left:=Self.Left;
     Form2.Top:=Self.Top + 225;
    end;
end;
 
XakerДата: Четверг, 09.09.2010, 16:43 | Сообщение # 5
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
а другого способа никто не знает...? а то при bsnone если перемещать форму правно вверх (если прикрепленная форма внизу) возникает мерцание... dry а я всё не могу с ним смирится...сразу скажу DoubleBuffered не помогает.
 
Форум » Все о Delphi » Программа и интерфейс » Перемещение нескольких форм (одновременно)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2017
Хостинг от uCoz