Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Манипуляции с формой, Манипуляции с формой  
:(
    Опции темы
Clasteruga
Дата 7.4.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Всем доброго времени суток...........есть форма 1 и форма 2, как сделать что бы форма 2 при ее передвижении мышью не могла выйти за пределы 1 формы, как бы просто упиралась в 1 форму.......
PM MAIL   Вверх
Snowy
Дата 7.4.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Код
Form2.Parent := Form1;
?
PM MAIL   Вверх
Clasteruga
Дата 8.4.2011, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



А без использования form2.parent:=form1; можно както программно указать 2 форме при подводе ее к граница 1 формы, что бы 2 форма как бы упиралась в края 1 формы и не могла выйти за границы

Что-то типа if Form2.Left + Form2.Width > Form1.Width then (как дальше описать) ?????

Это сообщение отредактировал(а) Clasteruga - 8.4.2011, 09:17
PM MAIL   Вверх
Frees
Дата 8.4.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(Clasteruga @  8.4.2011,  12:06 Найти цитируемый пост)
(как дальше описать) 

Form2.Left := Form1.Width - Form2.Width;


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Clasteruga
Дата 8.4.2011, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Цитата(Frees @ 8.4.2011,  09:19)
Цитата(Clasteruga @  8.4.2011,  12:06 Найти цитируемый пост)
(как дальше описать) 

Form2.Left := Form1.Width - Form2.Width;

Не что-то не то получается ((((
PM MAIL   Вверх
Frees
Дата 8.4.2011, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Form2.Left := (Form1.Left + Form1.Width) - Form2.Width;


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Clasteruga
Дата 8.4.2011, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Прикольно но немного не то: надо что бы при перемещении мышью формы 2, когда границы формы2 доходят до границы формы 1, то перетаскивание формы2 становилось бы невозможным, что-то типа 2форма упирается в границы 1
PM MAIL   Вверх
Frees
Дата 8.4.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(Clasteruga @  8.4.2011,  13:06 Найти цитируемый пост)
Прикольно но немного не то: надо что бы при перемещении мышью формы 2, когда границы формы2 доходят до границы формы 1, то перетаскивание формы2 становилось бы невозможным, что-то типа 2форма упирается в границы 1

и в чем проблема? 
как ограничить смещение написано выше
лови сообщение WM_MOVE для 2 формы и пиши там свой этот код


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Clasteruga
  Дата 8.4.2011, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Никогда подобного не делал.......уважаемый Frees научите ловить сообщение WM_MOVE для 2 формы, не серчайте сильно, я только начинающий(ведь ходить мы не сразу научились)  smile  
PM MAIL   Вверх
Frees
Дата 8.4.2011, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



http://www.cryer.co.uk/brian/delphi/howto_...nmove_event.htm

Добавлено через 1 минуту и 48 секунд
наверно лучше ловить WM_MOVING


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Clasteruga
Дата 11.4.2011, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Вот сделал, а как сделать для правого края?

procedure TForm2.WMMoving(var Msg: TWMMoving);
var
workArea: TRect;
begin
with Msg.DragRect^ do
begin
if Form2.Left < Form1.Left then
OffsetRect(Msg.DragRect^, Form1.Left - Left, 0) ;
if Form2.Top < Form1.Top then
OffsetRect(Msg.DragRect^, 0, Form1.Top - Top) ;
end;
inherited;
end;
PM MAIL   Вверх
Gwire
Дата 12.4.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



Код

procedure TForm2.FormCreate(Sender: TObject);
begin
    Form2.Parent:= Form1;
end;

procedure TForm2.WMMoving(var Msg: TWMMoving);
var R: TRect;
begin
    R.TopLeft     := Form1.ScreenToClient( Msg.DragRect^.TopLeft );
    R.BottomRight := Form1.ScreenToClient( Msg.DragRect^.BottomRight );

    if R.Left < 0 then OffsetRect(Msg.DragRect^, -R.Left, 0);
    if R.Top  < 0 then OffsetRect(Msg.DragRect^, 0, -R.Top);
    if R.Right  > Form1.ClientWidth  then OffsetRect(Msg.DragRect^, Form1.ClientWidth-R.Right, 0);
    if R.Bottom > Form1.ClientHeight then OffsetRect(Msg.DragRect^, 0, Form1.ClientHeight-R.Bottom);

    inherited;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1325 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.