Рекомендации по док-библиотеке для Delphi / C++Builder?

Моя команда в настоящее время думает о том, чтобы перевести наше существующее приложение на основе MDI к более современному, основанному на стыковке подходу. Мы все еще думаем, но мы хотели бы переместить это в нечто вроде стыковки и визуального вида VS2010:

Интерфейс VS2010 и скриншот стыковки

Это имеет следующие особенности:

  • Показывает смешанный контур, где окно будет стыковаться
  • Доки в вкладки, а также бок о бок
  • Позволяет закреплять, перетаскивая и отпуская поверх изображения, показывающего положение дока (я называю это "виджетом закрепления" ниже)
  • Выглядит неплохо (тема / интерфейс)

У меня возникают проблемы с поиском качественной док-библиотеки для использования с RAD Studio 2010, и я ищу советы, какие библиотеки я не нашел, или как использовать те, которые я нашел, для достижения чего-то подобного.

  • Обновление: в итоге я купил док-библиотеку AutomatedQA. Я думаю, что это лучшее. Подробнее об этом ниже в разделе об этом.

  • Обновление 2, июль 2011 года: этот вопрос рассматривал каждую отдельную док-библиотеку, доступную для Delphi/C++Builder, поэтому я стараюсь обновлять ее. Два изменения, о которых я знаю:
    • SmartBear, который теперь владеет AutomatedQA, имеет док-библиотеку AutomatedQA с истекшим сроком эксплуатации. Это тот, который я рекомендовал покупать. Они рассматривают это как открытый источник.
    • Единственная проблема, которая возникла у меня с док-станцией DevExpress (из-за которой она не заслуживала покупки), заключалась в отсутствии поддержки стыковки в стиле VS2008/10, с виджетом стыковки, прозрачным наложением при перетаскивании и т.д. Из-за этого, и поскольку AQDocking больше не продается, если бы я задал этот вопрос сейчас, мой приемлемый ответ - купить DevExpress Docking.

Я нашел следующие библиотеки. Вот обзор:

Встроенная стыковка VCL

Это позволяет пристыковывать формы к другим формам или TWinControls, но выглядит довольно простым. Перетаскивание форм осуществляется с помощью нарисованного контура XOR, что очень плохо работает в Vista и Win7. Существует элемент управления TTabDockSet для закрепленных форм с вкладками, но я не могу понять, как управлять тем, как заголовки закрепленных форм отображаются при закреплении. Я думаю, что одновременную реализацию стыковки нужно будет выполнять вручную, создавая новые панели стыковки на лету. Окна стыковки в RAD Studio IDE немного более гладкие, чем это (например, прозрачные прямоугольники при перетаскивании формы), что странно, поскольку я думал, что в нем используется поддержка стыковки VCL.

Стыковка JVCL

Это выглядит немного более приличным решением, чем встроенная стыковка VCL. Он поддерживает стыковку на любом ребре или клиенте и показывает прямоугольник в форме буквы алфавита, где форма будет стыковаться.

Программа стыковочных испытаний JVCL

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

Комплект для стыковки LMD

Это выглядит многообещающе: хотя кажется, что оно не стыкуется с формами напрямую, оно имеет панели стыковки и элементы управления / рамки помещены на него. Существующие формы могут быть перенесены в фреймы. У этого также есть виджет стыковки и поддержка дока с вкладками.

Тем не менее, демоверсия выглядит довольно ненадежной. У меня установлена ​​последняя ознакомительная версия, и создание нового проекта с док-сайтом и несколькими панелями и нажатие кнопки "Выполнить" приводит к следующему:

Стыковка LMD

Это сбой при потоковой передаче компонента формы. Визуальный анализ файла DFM не показывает ничего плохого, но есть непрозрачный двоичный двоичный объект для информации о макете, которая может быть причиной этого. Это не особенно обнадеживает в ознакомительной версии.

DevExpress Express Docking

Я возлагал на это большие надежды: я никогда раньше не использовал элементы управления DevExpress, но у них хорошая репутация. Но их демонстрационная программа была действительно разочаровывающей:

DevExpress док-станция

Элемент управления мерцает и, кажется, не подходит для Windows, даже используя стиль XP. У него есть вкладка с вкладками, но он использует контур XOR-ed - то, что не очень хорошо работает в XP или Vista. У этого также нет никакого вида виджета стыковки. Честно говоря, похоже, он не обновлялся со времен Windows XP. Обновление июль 2011: это улучшается.

AutomatedQA / SmartBear док-библиотека

На данный момент это самая многообещающая из всех библиотек.

AutomatedQA док-библиотека

Я регулярно использую AQTime, отличный профилировщик, который, кажется, написан с использованием их собственной док-библиотеки, и он хорошо работает. Тем не менее, последняя версия загружаемой пробной версии библиотеки док-станции предназначена для RAD Studio 2009, и совет по установке в 2010 году заключается в том, что она не поддерживается, и вам следует перекомпилировать исходный код. Демонстрация не поставляется с исходным кодом, и у нас нет RS2009, и установщик отказывается от установки, если мы не делаем, и даже если нам удастся установить его, мы не сможем его использовать, так как нам нужно будет перекомпилировать несуществующий источник.

Я связался с их командой поддержки, и они указали мне на эту ветку. Я также нашел другой поток с клиентами, спрашивающими почти то же самое. Я ответил и надеюсь услышать лучшие новости. Я не рекомендую покупать продукт, который я не могу оценить, особенно если он не поддерживается нашей IDE.

  • Обновление: я закончил тем, что покупал эту библиотеку. Несмотря на проблемы с оценкой (она работает в D2007, и у меня была ее копия), она кажется самой простой в использовании из всех библиотек, а также самой мощной - например, для нее легко написать тему. Я определенно рекомендую его, если вам нужно выбрать и док-библиотеку.

  • Обновление июль 2011: эта библиотека больше не продается, но может скоро появиться в открытом доступе.

Что я пропустил?

Это все, что я нашел до сих пор. Что теперь?

  • Я пропустил какие-либо хорошие док-библиотеки для Delphi / C++ Builder / RAD Studio 2010?
  • Я пропустил какие-либо функции в библиотеках, на которые смотрел до сих пор? Было бы здорово услышать ответ типа "Вы пропустили FooBar" или "JVCL действительно имеет виджет для закрепления, и вы можете использовать его вот так...".
  • Что бы вы посоветовали в качестве моего следующего шага?

Спасибо за ваш вклад:)

3 ответа

Решение

Я использовал JCL, у меня есть LMD, DevExpress и Automated QA Docking Library.

Самое близкое, что вам нужно, - это библиотека стыковки AutomatedQA. Я использую это в своей работе для одного из моих проектов.

Ваш следующий шаг, купить библиотеку AutomatedQA:)

от счастливого клиента.

Я - разработчик JVCL-джедаев, и я использовал JvDocking в своих собственных коммерческих проектах и ​​нашел его надежным и надежным.

Кроме того, это бесплатно. Это легко расширить. Он создает внешний вид примерно так же, как стыковка в стиле visual studio 2008.

Я не нашел ни одной библиотеки, которая бы делала все, что мне хотелось бы, поэтому, проведя некоторые эксперименты, я обнаружил, что могу делать практически все, что хотел, используя элементы управления Native VCL Docking (NVCLD) с серией пользовательских модификаций и некоторыми дополнительными управления.

Ниже приведен список вещей, с которыми я столкнулся, чтобы заставить NVCLD работать так, как я хотел. У меня не было много проблем с портированием между версиями, но это потому, что у меня также есть src.

Если вы не хотите делать что-то свое или вы действительно хотите использовать стороннюю библиотеку, вы можете перестать читать остальное.:)

Дополнительные компоненты:

  1. TDockPanel

    Эта сильно модифицированная стыковочная панель - рабочая лошадка моей системы. Я нашел оригинал в сети, но изменил его, чтобы обеспечить немного большую гибкость для моих нужд.

  2. Пользовательские формы стыковки (базовая форма)

    Используя собственный базовый класс для моих форм стыковки и наследуя его при необходимости, у меня меньше модификаций для всех форм-потомков.

Пользовательские модификации

Это модификации файлов.pas самих компонентов NVCLD. Большинство из этих изменений больше не нужно делать из-за некоторых улучшений, внесенных в базовые элементы управления, начиная с D2009. Вы должны иметь возможность просто создать нового потомка и реализовать там изменения вместо непосредственного изменения файлов src по умолчанию.

  1. Прозрачные стыковочные формы

    По умолчанию (до 2009 года наверняка) NVCLD не поддерживает движение прозрачной формы. Был патч JVCL, выпущенный пару лет назад, который добавил эту поддержку JVCL, которую было просто включить в патч NVLCD.

  2. Диспетчер стыковки

    Менеджер стыковки по умолчанию (наверняка, до 2009 года) не допускал изменения новых / пользовательских изображений кнопок или изменений заголовка стыковки. Это было исправлено в D2009, я считаю, когда необходимые методы были сделаны виртуальными.

  3. Закладка с вкладками

    Для поддержки дополнительных компонентов стыковки мне нужно было изменить файл DockTabSet.pas для поддержки дополнительных свойств стыковки, используемых дополнительными компонентами. Большая часть этого была исправлена, когда Docking Manager был изменен, как упоминалось ранее.

Как я уже говорил, большинство этих изменений я внес непосредственно в файлы Delphi Src, и вам не нужно делать это для более новых версий Delphi. Я хочу сказать, что, потратив немного усилий, вы можете получить достаточно надежную систему стыковки, не прибегая к использованию сторонней библиотеки. Не то, чтобы с ними что-то было не так, но я предпочитаю не использовать их, если у меня нет другого выбора или у меня нет времени, чтобы заставить это работать по-моему.

Другие вопросы по тегам