Рекомендации для библиотеки стыковки для Delphi/С++ Builder?
Моя команда в настоящее время думает о переносе нашего существующего приложения на основе MDI на более современный подход, основанный на стыковке. Мы все еще думаем, но мы хотели бы переместить его на что-то вроде стыковки VS2010 и визуального вида:
![VS2010 UI and docking screenshot]()
Это имеет следующие функции:
- Показывает смешанную схему, в которой окно будет состыковано.
- Доки в вкладках, а также бок о бок
- Позволяет выполнять стыковку, перетаскивая и высвобождая изображение, отображающее положение док-станции (я называю это "виджет док-станции" ниже)
- Выглядит неплохо (тема/пользовательский интерфейс)
У меня возникли проблемы с поиском высококачественной библиотеки стыковки для использования с RAD Studio 2010 и я ищу совет ни о том, что я не нашел в библиотеке, или о том, как использовать те, которые я нашли что-то подобное.
- Обновление 2, июль 2011 г.. Этот вопрос рассмотрел каждую библиотеку док-станции, доступную для Delphi/С++ Builder, поэтому я стараюсь поддерживать ее в актуальном состоянии. Два изменения, о которых я знаю:
- У SmartBear, у которого теперь есть AutomatedQA, есть завершенная библиотека AutomatedQA docking. Это тот, который я рекомендовал покупать. Они рассматривают возможность открытого доступа к ней.
- Единственной проблемой, с которой я столкнулся с док-станцией DevExpress (что сделало ее недостойной), было отсутствие поддержки док-станции в стиле VS2008/10 с виджетами для стыковки, прозрачным наложением при перетаскивании и т.д. Они теперь реализуют его. Из-за этого, и поскольку AQDocking больше не продается, если бы я задал этот вопрос, теперь моим принятым ответом было бы купить DevExpress Docking.
Я нашел следующие библиотеки. Вот обзор:
Встроенная стыковка VCL
Это позволяет формам состыковываться с другими формами или TWinControls, но, по-видимому, является довольно простым. Перетаскивание форм с использованием раскрашенной схемы XOR, которая очень плохо работает на Vista и Win7. Существует элемент управления TTabDockSet для вкладок состыкованных форм, но я не могу понять, как управлять тем, как пристыкованные заглавные формы формируются после стыковки. Я думаю, что внедрение стыковки бок о бок должно быть сделано вручную, создавая новые панели док-станции "на лету". Окна стыковки RAD Studio IDE немного слабее, чем это (прозрачные прямоугольники при перетаскивании формы, например), что является нечетным, так как я думал, что он использовал поддержку стыковки VCL.
Это выглядит немного более достойным решением, которое встроенная стыковка VCL. Он поддерживает стыковку с любым ребром или клиентом и показывает прямоугольник с алфавитом, в котором форма будет состыкована.
![JVCL docking test program]()
Похоже, что это довольно сложно (сбросить вторую форму поверх первого разрешено, но замораживает программу) и не имеет встроенной поддержки поддержки с вкладками или любого вида виджета drop-location.
Это выглядит многообещающим: в то время как, похоже, он не имеет непосредственных док-форм, на нем установлены стыковочные панели, а на них устанавливаются элементы управления/фреймы. Существующие формы могут быть перенесены в фреймы. Он также имеет док-виджет и поддержку вкладок в виде вкладок.
Однако демонстрация кажется довольно ненадежной. У меня установлена последняя оценочная версия и создание нового проекта с док-сайтом и несколькими панелями, а нажатие Run вызывает следующее:
![LMD docking]()
Это сбой в потоке компонентов формы. Визуальный анализ файла DFM не показывает ничего плохого, но есть непрозрачная бинарная капля для информации о макете, которая может вызвать ее. Это не особенно обнадеживает в оценочной версии.
У меня были большие надежды на это: я никогда раньше не использовал никаких элементов управления DevExpress, но у них хорошая репутация. Но их демо-программа была действительно разочаровывающей:
![DevExpress docking]()
Элемент управления мерцает и, похоже, не очень хорошо работает с Windows, даже с использованием стиля XP. Он имеет стыковую стыковку, но использует схему XOR-ed - что-то, что плохо работает на XP или Vista. У него также нет никакого виджетов. Честно говоря, похоже, что он не обновлялся со времен Windows XP. Обновление Июль 2011: Это улучшено.
Это самая многообещающая из всех библиотек.
![AutomatedQA docking library]()
Я регулярно использую AQTime, отличный профайлер, который, как представляется, написан с использованием собственной библиотеки стыковки, и он работает хорошо. Тем не менее, последняя версия пробной загрузки библиотеки для док-станции для RAD Studio 2009, а совет, заданный для установки в 2010 году, заключается в том, что он не поддерживается, и вы должны перекомпилировать исходный код. Демонстрация не поставляется с источником, и у нас нет RS2009, и установщик отказывается устанавливать, если мы не делаем этого, и даже если нам удалось установить его, мы не сможем его использовать, так как нам нужно будет перекомпилировать несуществующий источник.
Я связался со своей командой поддержки, и они указали мне на этот поток. Я также нашел еще одну цепочку с клиентами, которые просят почти то же самое. Я ответил и надеюсь услышать лучшие новости. Я не рекомендую покупать продукт, который я не могу оценить, особенно если он не поддерживается для нашей среды разработки.
-
Обновление: Я приобрел эту библиотеку. Несмотря на проблемы, связанные с оценкой (он работает в D2007, и у меня была его копия), кажется, проще всего использовать все библиотеки, а также самые мощные - например, легко написать тему для него. Я бы определенно рекомендовал его, если вам нужно также выбрать библиотеку док-станции.
-
Обновление июль 2011: Эта библиотека больше не продается, но скоро может быть открыта.
Что я пропустил?
Это все, что я нашел до сих пор. Что теперь?
- Я пропустил какие-либо хорошие библиотеки для стыковки для Delphi/С++ Builder/RAD Studio 2010?
- Я пропустил какие-либо функции в библиотеках, на которые я смотрел до сих пор? Ответ вроде "Вы пропустили FooBar" или "JVCL действительно имеет виджет док-станции, и вы можете использовать его так..." было бы довольно удивительно, чтобы услышать.
- Что бы вы порекомендовали в качестве следующего шага?
Спасибо за ваш вклад:)
Ответы
Ответ 1
Я использовал JCL, у меня есть LMD, DevExpress и автоматическая библиотека док-станции QA.
Ближайший, который вы найдете, который будет соответствовать вашим потребностям, - это Библиотека допинга AutomatedQA. Я использую его в своей работе для одного из моих проектов.
Следующий шаг, купите библиотеку AutomatedQA:)
от Счастливого Клиента.
Ответ 2
Я разработчик JEDI JEDI, и я использовал JvDocking в своих собственных коммерческих проектах, и нашел его надежным и надежным.
Кроме того, он бесплатный. Это легко расширить. Он создает внешний вид примерно так же, как стыковка визуальной студии 2008 года.
Ответ 3
Я не нашел ни одну библиотеку, которая делает все, что я хотел бы, поэтому после некоторых экспериментов я обнаружил, что могу делать почти все, что я хотел, используя элементы управления Native VCL Docking (NVCLD) с серией пользовательских модификаций и некоторые дополнительные элементы управления.
Ниже приведен список вещей, которые я использовал, чтобы заставить NVCLD работать так, как я хотел. У меня не было много проблем с переносом между версиями, но это потому, что у меня тоже есть src.
Если вы не хотите свертывать свои собственные или вы действительно хотите использовать стороннюю библиотеку, вы можете, возможно, прекратить читать остальную часть этого.:)
Дополнительные компоненты:
-
TDockPanel
Эта сильно модифицированная стыковочная панель является рабочей лошадкой моей системы. Я нашел оригинал в сети, но изменил его с тех пор, чтобы обеспечить большую гибкость для моих нужд.
-
Пользовательские формы стыковки (базовая форма)
Используя собственный базовый класс для моих док-форм и наследуя его при необходимости, у меня есть меньше модификаций для всех форм потомков.
Пользовательские изменения
Это изменения в .pas файлах самих компонентов NVCLD. Большинство из этих изменений больше не нужно делать из-за некоторых улучшений, сделанных для базовых элементов управления, начиная с D2009. Вы должны просто создать новый потомок и реализовать изменения там, вместо того, чтобы напрямую изменять файлы src по умолчанию.
-
Прозрачные стыковочные формы
По умолчанию (до 2009 года наверняка) NVCLD не поддерживает прозрачное перемещение формы. Пару лет назад был выпущен патч JVCL, в котором добавлена поддержка JVCL, которая была простой для включения в патч NVLCD.
-
Менеджер док-станции
Менеджер док-станции по умолчанию (до 2009 года наверняка) не разрешил новые или пользовательские изображения кнопок или изменения заголовков стыковки. Это было исправлено в D2009, я верю, когда нужны необходимые методы, которые сделали виртуальными.
-
Скрытая стыковка
Для поддержки дополнительных компонентов док-станции мне нужно было изменить файл DockTabSet.pas для поддержки дополнительных свойств стыковки, используемых дополнительными компонентами. Большинство из них были исправлены, когда диспетчер Docking был изменен, как упоминалось ранее.
Поскольку я изложил большинство этих изменений, я напрямую обратился к файлам Delphi Src, и вам не нужно делать это для более новых версий Delphi. Я хочу сказать, что с небольшими усилиями вы можете иметь довольно надежную систему стыковки, не прибегая к использованию сторонней библиотеки. Не то, чтобы с кем-то было что-то не так, но я предпочитаю не использовать их, если у меня нет другого выбора или у меня нет времени, чтобы он работал на моем пути.