Интерфейс документа с вкладками в Delphi

Я рассматриваю различные макеты пользовательского интерфейса для моего следующего проекта, и мне было интересно, есть ли интегрированные или сторонние структуры, которые позволяют мне создавать интерфейс документа с вкладками?

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

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

5 ответов

Решение

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

  1. rkSmartTabs, он имитирует пользовательский интерфейс браузера Google Chrome с вкладками. и это с открытым исходным кодом.
  2. TAdvOfficePager, стиль MS Office.

Надеюсь, поможет.

Сторонние компоненты здесь не являются обязательными.

Вы можете использовать стандартные элементы управления Delphi, чтобы получить то, что вы хотите:

  • Поместите TPageControl в форму (из вкладки Win32);
  • Установите для его свойства Align значение alClient;
  • Щелкните правой кнопкой мыши элемент управления, затем выберите "Новая страница", чтобы добавить новую страницу.

Тогда не пишите свой интерфейс с вкладками на формах, но на фреймах.

Вы также можете создавать страницы по коду, отображая рамку внутри каждой страницы.

Я рекомендую использовать панель инструментов (TToolBar или аналогичную) и фреймы (TFrame) для имитации интерфейса с вкладками, причина?! Что ж, Delphi будет кроссплатформенным (не секрет в этом), они будут портировать большинство, если не все стандартные VCL, поставляемые с Delphi, поэтому, ПОЧЕМУ НЕ использовать это как преимущество?

Просто создайте фрейм (динамически), когда пользователь нажимает кнопку на панели инструментов, и уничтожьте предыдущую (если она есть), чтобы сохранить минимальное использование памяти, с другой стороны, время запуска / завершения работы приложения будет очень хорошим, если вы решили использовать (cx)TPageControl, TAdvPager и т. д., вы можете оказаться в ситуации, когда одна форма (основная, я подозреваю) будет иметь так много VCL, что потребуется много НЕОБХОДИМОЙ памяти и она будет медленной,

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

В любом случае, это мои два цента, надеюсь, это поможет.

Я использую JVCL JvDocking и его док-систему с вкладками для создания MDI-подобных приложений.

Вы также можете плавать, или мозаичные окна, в дополнение к тому, что они во вкладках.

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

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