| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Манипуляции с формой |
| Автор: Clasteruga 7.4.2011, 17:56 |
| Всем доброго времени суток...........есть форма 1 и форма 2, как сделать что бы форма 2 при ее передвижении мышью не могла выйти за пределы 1 формы, как бы просто упиралась в 1 форму....... |
| Автор: Snowy 7.4.2011, 18:15 | ||
|
| Автор: Clasteruga 8.4.2011, 09:06 |
| А без использования form2.parent:=form1; можно както программно указать 2 форме при подводе ее к граница 1 формы, что бы 2 форма как бы упиралась в края 1 формы и не могла выйти за границы Что-то типа if Form2.Left + Form2.Width > Form1.Width then (как дальше описать) ????? |
| Автор: Frees 8.4.2011, 09:19 |
Form2.Left := Form1.Width - Form2.Width; |
| Автор: Clasteruga 8.4.2011, 09:52 | ||
Не что-то не то получается (((( |
| Автор: Frees 8.4.2011, 09:57 |
| Form2.Left := (Form1.Left + Form1.Width) - Form2.Width; |
| Автор: Clasteruga 8.4.2011, 10:06 |
| Прикольно но немного не то: надо что бы при перемещении мышью формы 2, когда границы формы2 доходят до границы формы 1, то перетаскивание формы2 становилось бы невозможным, что-то типа 2форма упирается в границы 1 |
| Автор: Clasteruga 8.4.2011, 10:46 |
| Никогда подобного не делал.......уважаемый Frees научите ловить сообщение WM_MOVE для 2 формы, не серчайте сильно, я только начинающий(ведь ходить мы не сразу научились) |
| Автор: Frees 8.4.2011, 10:50 |
| http://www.cryer.co.uk/brian/delphi/howto_capture_onmove_event.htm Добавлено через 1 минуту и 48 секунд наверно лучше ловить WM_MOVING |
| Автор: Clasteruga 11.4.2011, 10:24 |
| Вот сделал, а как сделать для правого края? 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; |
| Автор: Gwire 12.4.2011, 17:55 | ||
|