Интерфейс документа с вкладками в Delphi
Я рассматриваю различные макеты пользовательского интерфейса для моего следующего проекта, и мне было интересно, есть ли интегрированные или сторонние структуры, которые позволяют мне создавать интерфейс документа с вкладками?
Чтобы прояснить, я хочу не какой-то механизм стыковки или интерфейс MDI, а прежде всего структуру, которая позволяет мне иметь одну основную форму и одну или несколько вторичных форм, которые будут отображаться в виде вкладок внутри основной формы.
Хотя я сказал, что не хочу никакого механизма стыковки, я сделал небольшое тестовое приложение, которое фактически использует его. Результат, который я получил, очень близок к тому, что я хочу. Во-первых, мне не хватает некоторых функций, таких как кнопка закрытия на каждой вкладке. Во-вторых, мне пришлось бы создать какую-то собственную структуру для автоматизации всех задач, таких как создание и уничтожение вкладок, сопоставление каждой новой формы с ее вкладкой, освобождение формы при закрытии связанной вкладки и т. Д. Я не говорю, что не могу этого сделать, но я хотел бы знать, есть ли готовые фреймворки, которые уже имеют все эти функции. Хотя я бы предпочел решение с открытым исходным кодом, коммерческое также приветствуется.
5 ответов
Я не думаю, что есть какой-либо фреймворк для интерфейса с вкладками, но для приятного внешнего вида элементов управления вкладками / страницами с кнопками закрытия на каждой вкладке, пожалуйста, проверьте следующее:
- rkSmartTabs, он имитирует пользовательский интерфейс браузера Google Chrome с вкладками. и это с открытым исходным кодом.
- TAdvOfficePager, стиль MS Office.
Надеюсь, поможет.
Сторонние компоненты здесь не являются обязательными.
Вы можете использовать стандартные элементы управления Delphi, чтобы получить то, что вы хотите:
- Поместите TPageControl в форму (из вкладки Win32);
- Установите для его свойства Align значение alClient;
- Щелкните правой кнопкой мыши элемент управления, затем выберите "Новая страница", чтобы добавить новую страницу.
Тогда не пишите свой интерфейс с вкладками на формах, но на фреймах.
Вы также можете создавать страницы по коду, отображая рамку внутри каждой страницы.
Я рекомендую использовать панель инструментов (TToolBar или аналогичную) и фреймы (TFrame) для имитации интерфейса с вкладками, причина?! Что ж, Delphi будет кроссплатформенным (не секрет в этом), они будут портировать большинство, если не все стандартные VCL, поставляемые с Delphi, поэтому, ПОЧЕМУ НЕ использовать это как преимущество?
Просто создайте фрейм (динамически), когда пользователь нажимает кнопку на панели инструментов, и уничтожьте предыдущую (если она есть), чтобы сохранить минимальное использование памяти, с другой стороны, время запуска / завершения работы приложения будет очень хорошим, если вы решили использовать (cx)TPageControl, TAdvPager и т. д., вы можете оказаться в ситуации, когда одна форма (основная, я подозреваю) будет иметь так много VCL, что потребуется много НЕОБХОДИМОЙ памяти и она будет медленной,
Использование фреймов имеет много преимуществ: если где-то в вашем приложении вам нужна "вкладка" для отображения, вы можете просто динамически создать нужный фрейм и использовать его без дополнительной работы.
В любом случае, это мои два цента, надеюсь, это поможет.
Я использую JVCL JvDocking и его док-систему с вкладками для создания MDI-подобных приложений.
Вы также можете плавать, или мозаичные окна, в дополнение к тому, что они во вкладках.
Я рекомендую TvjPageList, который является частью набора компонентов JVCL. Это открытый исходный код и, кажется, соответствует вашим требованиям.