Интерфейс документа с вкладками в Delphi - PullRequest
5 голосов
/ 16 января 2011

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

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

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

Ответы [ 5 ]

7 голосов
/ 16 января 2011

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

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

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

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

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

6 голосов
/ 16 января 2011

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

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

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

1 голос
/ 16 января 2011

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

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

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

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

0 голосов
/ 17 июня 2011

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

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

0 голосов
/ 16 января 2011

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

...