Как сделать Drag and Dock, как Delphi IDE с выводами и вкладками? - PullRequest
6 голосов
/ 17 февраля 2012

Я бы хотел, чтобы перетаскивание и закрепление работали в моих приложениях так же, как в Delphi IDE (т. Е. Возможность перетаскивать объектный инспектор / просмотр структуры и закреплять их в подходящих местах). У меня был довольно хороший успех с закреплением форм в PageControl, но мне было интересно, если кто-нибудь знает, как заставить его работать с маленькими кнопками закрытия и булавками и т. Д.

Мне также было бы интересно узнать, какие компоненты Delphi IDE использует для достижения этой цели.

Причина моего вопроса в том, что я хочу сделать гораздо более продвинутые видео о том, как это сделать, два из тех, что я делал ранее: здесь и здесь .

1 Ответ

7 голосов
/ 17 февраля 2012

Вы можете использовать JVCL JvDocking компоненты для перетаскивания и закрепления, практически в любой версии Delphi.Это бесплатно и с открытым исходным кодом.Стиль со штифтами и кнопками закрытия доступен с использованием стиля закрепления, называемого стилем VID (visual interdev), который поставляется вместе с JvDocking.

enter image description here

Уже существует множество коммерческих альтернатив.также, и есть некоторая поддержка, встроенная в Delphi, которую я считаю недостаточной для своих нужд.Хотя Delphi IDE имеет собственную внутреннюю док-библиотеку, поддержка вкладок очень ограничена, медленна и, по моему субъективному мнению, нарушена.

Однако даже в древних версиях Delphi, Delphi 7 и выше, JvDocking, предоставляет всефункциональность, которую обеспечивает стыковка VCL, плюс еще, так что нет проблем с игнорированием встроенной функциональности VCL, которая заключается в стыковке, как TStringGrid для реальных гридов.

Шаги с JvDocking:

  1. Удалите док-сервер и объект стиля док-станции на главном (форма хоста) и подключите их.
  2. Удалите клиентский компонент док-станции на клиенте (форма, подлежащая стыковке) и подключите его к стилю подключения.
  3. Настройте свойства док-сервера.
  4. Запустите приложение.Пусть это создаст форму.Теперь перетащите клиентскую форму в область, которая становится закрепляемой док-сервером.Посмотрите, как это выглядит.

Для закрепления демонстраций кода см. Демонстрации JvDocking в папке примеров JVCL.

Обновление

Или выможет использовать то, что встроено в Delphi VCL начиная с XE и XE2.XE и XE2 включают демонстрационный проект стыковки с именем dockex.dpr.

На Win7 / Vista демо-версия находится по адресу:

C:\Users\Public\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

Здесь вы найдете демонстрационную версию для Win XP:

C:\Documents and Settings\All Users\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

Вам также следует ознакомиться с документацией для TDockTabSet в VCL и статьей EDN , содержащейся в комментариях, с исходным кодом, который можно загрузить здесь .По моему скромному мнению, Jedi JvDocking более профессионально и изящно, чем Docking Demo, поставляемый с Delphi, но встроенный материал имеет то преимущество, что работает без установки каких-либо дополнительных компонентов.Я только что попробовал демонстрацию DockTabSet и встроенные демонстрационные ролики, и они медленные, а картина уродливая и мерцает.JvDocking выглядит профессионально.Это твой звонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...