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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 18:28   #1
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
Восклицание Delphi 7 Взаимное прилипание\отлипание форм в одном проекте

Как осуществить такое?
Если есть компоненты,посоветуйте пожалуйста названия,ссылки.
Облазил много чего,но не нашёл конкретных ответов,результатов.
Надеюсь на вашу помощь.
Dj_SheLL вне форума Ответить с цитированием
Старый 21.08.2010, 22:09   #2
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

Нет никаких предложений?
Я просто хочу добиться прилипания,как в Winamp плеере,когда одно его окошко "подносишь" к другому,то оно прилипает.
Dj_SheLL вне форума Ответить с цитированием
Старый 21.08.2010, 22:39   #3
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Какой язык? На делфи могу выложить, где-то делал.

Сорри, не увидел заголовка. Пошел искать.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 21.08.2010, 23:13   #4
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Для начала пишем в секции private:
Код:
  private
    procedure WMWindowPosChanging1(var Msg: TWMWindowPosChanging);
    message WM_WINDOWPOSCHANGING;
Затем пишем:
Код:
procedure TForm_Main.WMWindowPosChanging1(var Msg: TWMWindowPosChanging);  //для "прилипания" к краям экрана/к нужной форме
var 
  WorkArea: TRect;
  StickAt : Word;
begin
  StickAt := 20;  //на каком расстоянии главная форма будет "прилипать" к краю экрана
  SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkArea, 0);
  with WorkArea, Msg.WindowPos^ do
    begin  // Сдвигаем границы для сравнения с левой и верхней сторонами
      if (Form_Main.Visible=true) and (Glued1.Checked=true) then
        begin
          Form_LOG.Top:=Form_Main.Top+Form_Main.Height-2;  //задаем координаты "прилипшего окна"
          Form_LOG.Left:=Form_Main.Left;
        end;
      Right:=Right-cx;
      Bottom:=Bottom-cy;
      if abs(Left-x)<=StickAt then x:=Left;
      if abs(Right-x)<=StickAt then x:=Right;
      if abs(Top-y)<=StickAt then y:=Top;
      if abs(Bottom-y)<=StickAt then y:=Bottom;
    end;
  inherited;
end;
Form_LOG - это та форма, которая должна прилипать к главной (Form_Main)
Glued1 - пункт меню, на котором если поставить галочку, то формы будут "слипшиеся"

Будут вопросы - обращайтесь.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 21.08.2010, 23:49   #5
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

Ооо!!!Огромнейшее спасибо!
Буду тестить...
Dj_SheLL вне форума Ответить с цитированием
Старый 22.08.2010, 00:02   #6
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Рад, что это вам пригодилось, а то после того, как я это все сделал, заказчик сказал, что ему все-таки надо, чтобы лог был не в отдельном окне, как ему хотелось вначале, а в главном...пришлось убирать из проекта
Хорошо, что старый проект я отдельно сохранил. Сейчас бы и не вспомнил, как это все делается
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 22.08.2010 в 00:16.
ex.cluz вне форума Ответить с цитированием
Старый 08.11.2011, 21:46   #7
SpySpook
Новичок
Джуниор
 
Регистрация: 07.10.2011
Сообщений: 1
По умолчанию

Добрый день кто может мне подсказать как сделать прилипание второй формы с право к первой??? в этом примере она прилипает с низу а как сделать чтоб она прилипла с право
в заранее спасибо
SpySpook вне форума Ответить с цитированием
Старый 22.04.2012, 14:12   #8
Ariomex
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 11
По умолчанию

День добрый! Пытаюсь сделать то же, что и автор темы, но что-то как-то не выходит... Есть два примера (приложил к посту). В первом формы липнут друг к другу, но чтобы её переместить из прилипшего состояния нужно отпускать ЛКМ и не учтено прилипание при растягивании. А во втором примере не нужно отпускать ЛКМ, но форма входит внутрь основной (что мне не надо). Но тут, если сделать стиль форм "bsSizeToolWin", то при растягивании формы будут прилипать, однако не без багов... Может кто помочь с этим разобраться ?
Вложения
Тип файла: rar 1.rar (163.3 Кб, 17 просмотров)
Тип файла: rar 2.rar (172.5 Кб, 12 просмотров)
Ariomex вне форума Ответить с цитированием
Старый 25.09.2012, 17:23   #9
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

модуль TMagnetic легко и просто предоставляет фукнционал для работы с липкими окошками



http://jqbook.narod.ru/files/TMagnetic1.1.rar << скачать
http://jqbook.narod.ru/delphi/magnetic.htm << документация
Lesha вне форума Ответить с цитированием
Старый 06.07.2015, 14:24   #10
Renvold
Новичок
Джуниор
 
Регистрация: 05.11.2012
Сообщений: 1
По умолчанию

Так. А кто знает какое свойство используется у формы, чтобы в момент прилипания к правому или левому краю экрана форма переворачивалась и все кнопки перестраивала вертикально, и на оборот, если прилипать к верхнему или нижнему то строить горизонтально. (По умолчанию форма разработана как горизонтальная)

Вообщем мне нужна добиться таго же эффекта что и у "Панель задач"
Renvold вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#,J#,Assembler в одном проекте. Tatarin_86 Помощь студентам 0 31.03.2010 22:10
Удаление всех форм в проекте tanya-pvt Microsoft Office Access 0 31.03.2010 12:23
Много форм в проекте. Как открыть одну из другой? TwiX Общие вопросы Delphi 7 25.08.2009 21:59
Как создать пароли в проекте (Delphi) Reani Помощь студентам 2 07.06.2008 06:18
Прилипание. Черничный Общие вопросы Delphi 3 30.05.2008 15:49