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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 09:45   #1
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
Радость Перемещение окон в Delphi 7.0

Здравствуйте, помогите, пожалуйста
У меня в программе несколько окон, как сделать так, чтобы при перемещении любого окна, все остальные окна перемещались вместе с ним?=))
a_n_n_a вне форума Ответить с цитированием
Старый 11.03.2009, 11:31   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

чтото типа setwindowpos, точно не помню
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 11.03.2009, 13:28   #3
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Самое универсальное - создать свой шаблон формы (новый класс), прописать там все необходимые операции, поместить в репозитарий, а потом все формы проекта наследовать от данного окна из репозитария.
Jeni вне форума Ответить с цитированием
Старый 11.03.2009, 14:04   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

у формы есть событие CanResize в нем пиши

Код:
procedure tform1.FormCanResize(Sender: tobject);
begin
form2.left:=form1.left;
end;
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 11.03.2009 в 19:00.
KORN вне форума Ответить с цитированием
Старый 11.03.2009, 14:16   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

KORN, поправлю
CanResize это функция какая-то, кстати а что она делает...с ней я чего то не знаком...
а событие OnResize
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.03.2009 в 14:19.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.03.2009, 14:22   #6
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

чуть чуть поправлю там событие FormCanResize... OnResize - это изменение размера формы.
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 11.03.2009, 14:23   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

http://programmersforum.ru/showthread.php?t=13165
По указанному событию TForm1.OnMove вычисляйте, куда и насколько сдвинулась активная форма вашего приложения и соответственно сдвигайте остальные формы.
mihali4 вне форума Ответить с цитированием
Старый 11.03.2009, 18:56   #8
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Да, действительно, перехватывать сообщение wm_move для формы это первое, что приходить в голову в этом случае. Работающий код для трех форм на Delphi 7 вылаживаю в архиве.
Маленькая проблема возникает с тем, что нельзя просто прописывать в процедурах сообщения сразу присваивания другим формам, так как формы еще не созданы, поэтому приходится проверять.
Интересно, есть ли другой метод решения данной задачи....
Вложения
Тип файла: rar как перемещать несколько форм одновременно.rar (16.9 Кб, 25 просмотров)
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 11.03.2009, 19:00   #9
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

его я описал выше
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 12.03.2009, 03:26   #10
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Давно Delphi не открывал.
#8-хорошо.
Могу предложить ещё вариант
Код:
...
procedure WMWindowPosChanged(var Msg: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
...
procedure TForm1.WMWindowPosChanged(var Msg: TWMWindowPosChanged);
begin
if Form2<>nil then
begin
Form2.Left:=Form2.Left+(Msg.WindowPos.x-Left);
Form2.Top:=Form2.Top+(Msg.WindowPos.y-Top);
Form2.Height:=msg.WindowPos.cy;
inherited;
end;
end;
В WM_WINDOWPOSCHANGED передаётся ещё и размеры формы, может пригодиться. На висте проблем нет.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перетаскивание окон werat Свободное общение 2 18.08.2008 11:58
Размножение окон Sergey2 Общие вопросы Delphi 35 29.01.2008 09:02
Delphi, перемещение формы. north Помощь студентам 3 23.01.2008 22:34
Координаты окон Лубышев Общие вопросы Delphi 6 22.01.2008 19:40
Сворачивание окон Legat Win Api 2 08.10.2007 16:36