Рекомендации по док-библиотеке для Delphi / C ++ Builder? - PullRequest
47 голосов
/ 03 августа 2010

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

VS2010 UI and docking screenshot

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

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

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

  • Обновление: В итоге я купил Библиотека стыковки AutomatedQA .Я думаю, что это лучшее.Более подробная информация приведена ниже в разделе об этом.

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

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

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

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

стыковка JVCL

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

JVCL docking test program

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

Пакет стыковки LMD

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

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

LMD docking

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

DevExpress ExpressDocking

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

DevExpress docking

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

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

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

AutomatedQA docking library

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

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

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

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

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 28 октября 2011

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

Кроме того, он бесплатный.Это легко расширить.Он создает внешний вид и ощущается примерно так же, как стыковка в стиле Visual Studio 2008.

3 голосов
/ 03 августа 2010

Я не нашел ни одной библиотеки, которая бы делала все, что я хотел, поэтому, проведя некоторые эксперименты, я обнаружил, что могу делать почти все, что хочу, используя элементы управления 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. Я хочу сказать, что, потратив немного усилий, вы можете получить достаточно надежную систему стыковки, не прибегая к использованию сторонней библиотеки. Не то, чтобы с ними что-то было не так, но я предпочитаю не использовать их, если у меня нет другого выбора или у меня нет времени, чтобы заставить это работать у меня.

2 голосов
/ 03 августа 2010

Я использовал JCL, у меня есть LMD, DevExpress и автоматизированная док-станция QA.

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

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

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

...