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

47

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

Изображение 675

Это имеет следующие функции:

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

У меня возникли проблемы с поиском высококачественной библиотеки стыковки для использования с 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.

стыковка JVCL

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

Изображение 676

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

LMD Docking Pack

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

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

Изображение 677

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

DevExpress ExpressDocking

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

Изображение 678

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

Библиотека стыковки AutomatedQA/SmartBear

Это самая многообещающая из всех библиотек.

Изображение 679

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

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

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

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

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

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

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

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

  • 3
    +1. Хорошее исследование действительно. Вы пропустили компоненты TMS. Я не могу комментировать простоту использования или производительность, но они, как правило, имеют «хорошо выглядящие» компоненты. Компоненты стыковки можно найти по адресу tmssoftware.com/site/advtoolbar.asp
  • 1
    Я как раз собирался защищать библиотеку DevExpress, пока не попробовал демо для себя. По сравнению с их набором элементов управления XtraBars для .net он определенно выглядит «старше». Но индикатор стыковочного устройства был запрошен и принят к исполнению, но дата выпуска пока не установлена. И это выглядит немного лучше, если вы используете их поддержку скинов. У нас есть подписка DevExpress VCL, и она действительно очень хорошая, но в некоторых областях она значительно отстает от своего двоюродного брата .net.
Показать ещё 3 комментария
Теги:
c++builder
dock
dockpanel-suite

3 ответа

2
Лучший ответ

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

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

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

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

  • 0
    Спасибо, Лютик. Я, вероятно, в конечном итоге сделаю это - просто было бы лучше сначала попробовать компоненты :) Хотя рекомендация хороша.
  • 1
    В итоге я купил док-библиотеку AutomatedQA, как вы и предлагали.
5

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

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

  • 0
    Как вы достигаете таких вещей, как виджет-док и т. Д.? Вы должны кодировать их самостоятельно или они встроены? На момент постановки этого вопроса JvDocking выглядел довольно простым (и глючным) - хотя это было пару лет назад.
  • 0
    Виджет, подобный Visual Studio, вероятно, можно было бы сделать, используя рисование без рамки в альфа-области над областью закрепления. Я думаю, что я мог бы добавить его в JvDocking, но это довольно много кода для рисования. Любой, кто не знаком с рисованием GDI и обработкой необработанных сообщений о перемещении мыши, получит удовольствие от этого.
Показать ещё 2 комментария
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. Я хочу сказать, что с небольшими усилиями вы можете иметь довольно надежную систему стыковки, не прибегая к использованию сторонней библиотеки. Не то, чтобы с кем-то было что-то не так, но я предпочитаю не использовать их, если у меня нет другого выбора или у меня нет времени, чтобы он работал на моем пути.

  • 0
    Спасибо Райан! Можно ли будет предоставить исходные фрагменты для некоторых из этих изменений или ссылку, где я могу найти дополнительную информацию? Основная причина, по которой я хочу купить набор компонентов, состоит в том, чтобы не изобретать велосипед ... слишком много другой работы, чтобы сделать это: p
  • 0
    @ Дэвид М: Конечно! Я могу попытаться создать небольшое демонстрационное приложение с src, чтобы показать, что я сделал и о чем говорю. Код является частью большого проекта, поэтому дайте мне день или два, чтобы придумать что-нибудь.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню