Большое спасибо Энрико за статью, CBox и примеры! Очень полезно.
Есть вопрос, хотя и немного не связанный, что нужно добавить, если я хочу, чтобы пользователь мог изменять размер диалога, перетаскивая границу диалога?
Еще раз спасибо!
У меня вопрос, хотя и немного не связанный с этим: что нужно добавить, если я хочу, чтобы пользователь мог изменять размер диалога, перетаскивая его границы?
Я не уверен в этом, но, насколько я знаю, такая возможность пока не поддерживается. Но было бы хорошо, если бы это было возможно, поскольку отдельные элементы управления и контейнеры будут по-прежнему следовать своим макетам без дальнейшего изменения расположения (например, если макеты центрированы, пространство будет максимизировано, так что элементы управления по-прежнему будут находиться в центре). В этом случае вам просто нужно переопределить метод OnResize() класса, чтобы снова вызвать метод Pack() главного контейнера CBox.
такой класс нужно в стандартные внести разработчиками!
супер!!!
Где находится файл "Layouts\Box.mqh"?
Я не нашел всю директорию "Layouts". Спасибо.
Где находится файл "Layouts\Box.mqh"?
Я не нашел всю директорию "Layouts". Спасибо.
- 2015.07.09
- Enrico Lambino
- www.mql5.com
Здравствуйте. Очень хороший класс, но если мы помещаем radiogroup или checkgeoup внутрь бокса, то он не отображается.
Здравствуйте,
Можно показать радиогруппу или контрольную группу. У меня есть несколько графических интерфейсов, которые делают это. Возможно, есть другие проблемы, например, не добавляется в контейнер CBOx или контейнер слишком мал. Во время разработки я устанавливаю для фона (основного и контейнеров) какой-либо цвет, чтобы было легче увидеть, где находятся границы. Я смогу помочь вам дальше, если вы покажете код, хотя бы для функции Create() главного диалога.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Применение контейнеров для компоновки графического интерфейса: класс CBox:
В данной статье описан альтернативный метод создания графического интерфейса на основе схем компоновки и контейнеров при помощи менеджера компоновки, а именно класса CBox. Класс CBox представляет собой вспомогательное средство управления, которое действует как контейнер основных элементов управления графического интерфейса. Он упрощает составление графических панелей, а иногда и сокращает время написания кода.
Самым простым способом создания графического интерфейса для какого-либо приложения является абсолютное расположение элементов управления внутри его диалогового окна. Тем не менее, иногда подобный подход к проектированию графического пользовательского интерфейса может быть неудобным и даже практически нецелесообразным. В данной статье описан альтернативный метод создания графического интерфейса на основе схем компоновки и контейнеров при помощи менеджера компоновки, а именно класса CBox.
Реализованный и используемый в данной статье класс менеджера компоновки в общих чертах схож с классами, применяемыми в некоторых широко распространенных языках программирования, например BoxLayout (Java) и Pack geometry manager (Python/Tkinter).
3.1. Стили компоновки
CBox предлагает два стиля компоновки: вертикальный и горизонтальный.
Базовая компоновка горизонтального стиля выглядит следующим образом:
Рис. 2. Горизонтальный стиль (центрированный)
Базовая компоновка вертикального стиля выглядит следующим образом:
Рис. 3. Вертикальный стиль (центрированный)
По умолчанию CBox применяет горизонтальный стиль.
Комбинация данных типов компоновки (возможно, с использованием нескольких контейнеров) позволяет воссоздать практически любой вариант графического интерфейса. Более того, размещение элементов внутри контейнеров допускает сегментированное проектирование. Иными словами, вы можете изменять размер и расположение элементов управления в одном контейнере без воздействия на элементы других контейнеров.
Автор: Enrico Lambino