С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах.
Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
Что получит читатель при прочтении этой серии статей?
Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
Что получит читатель при прочтении этой серии статей?
1. Цель проекта — дать возможность создавать максимально интуитивно понятные интерфейсы для конечного пользователя. А тем, кто будет эти интерфейсы создавать — максимально понятную в изучении и использовании библиотеку кода, которую можно будет развивать дальше.
2. Те разработчики, которые только начинают делать первые шаги в реализации больших проектов с использованием объектно-ориентированных методов либо только начинают изучать объектно-ориентированное программирование (ООП), получат конкретный материал по этой теме для изучения с множеством примеров от начала до реализации.
3. Более опытные получат еще одну реализацию библиотеки для построения графических интерфейсов и смогут сразу приступить к реализации своих идей. Хорошо, когда есть из чего выбирать.
4. Профессионалы, которые сами могут создать и наверняка уже имеют свои подобные библиотеки, получат возможность покритиковать предложенную реализацию и, возможно, предложить более правильный на их взгляд подход в реализации подобных проектов, что будет также интересно менее опытным читателям. Подобные дискуссии иногда не менее интересны, чем сама статья.
Я назвал метод изложения, который будет использоваться в этой серии статей — «попытка имитации идеальной последовательности». Дело в том, что в процессе реальной разработки больших проектов, последовательность действий и ход мыслей намного более беспорядочны и состоят из множества экспериментов, проб и ошибок. Здесь же все эти сложности останутся за кадром. Тем, кто впервые сталкивается с проектами такого масштаба, рекомендуется повторять все действия для лучшего закрепления материала при изучении этой библиотеки, а точнее процесса ее создания. Ведь серия этих статей дает возможность представить весь ход мыслей в идеальной последовательности, когда все ответы на большинство вопросов уже есть и все части проекта создаются по мере возникновения их необходимости.
Список статей (глав) первой части:
Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1)
- - Список элементов управления
- - Базовые классы стандартной библиотеки в качестве объектов-примитивов
- - Производные классы объектов-примитивов с дополнительными методами
- - Базовый класс для всех элементов управления
- - Тест обработчиков событий библиотеки и класса приложения
Графические интерфейсы I: Форма для элементов управления (Глава 2)
- - Класс формы для элементов управления
- - Методы для создания формы
- - Установка формы на график
Графические интерфейсы I: "Оживление" графического интерфейса (Глава 3)
- - Управление графическим интерфейсом
- - Функционал для возможности перемещения формы
- - Тест перемещения формы на графике
- - Изменение внешнего вида элементов интерфейса при наведении курсора
Графические интерфейсы I: Функции для кнопок формы и удаление элементов интерфейса (Глава 4)
- - Функции для кнопок формы
- - Удаление элементов интерфейса
Графические интерфейсы I: Тестируем библиотеку в программах разных типов и в терминале MetaTrader 4 (Глава 5)
- - Использование формы в индикаторах
- - Использование формы в скриптах
- - Использование библиотеки в Metatrader 4
Список статей (глав) второй части:
Графические интерфейсы II: Элемент «Пункт меню» (Глава 1)
- - Главное меню программы
- - Разработка класса для создания пункта меню
- - Тест установки пункта меню
- - Доработка главных классов библиотеки
Графические интерфейсы II: Элементы «Разделительная линия» и «Контекстное меню» (Глава 2)
- - Разработка класса для создания разделительной линии.
- - Тест установки разделительной линии
- - Разработка класса для создания контекстного меню.
- - Тест установки контекстного меню
- - Доработка класса для хранения указателей на все элементы
Графические интерфейсы II: Настройка обработчиков событий библиотеки (Глава 3)
- - Персональные массивы элементов
- - Управление состоянием графика
- - Идентификаторы для внешнего и внутреннего использования
- - Доработка класса контекстного меню
- - Доработка класса пункта меню
- - Доработка главного класса обработки событий графического интерфейса
- - Предварительный тест обработчиков событий
- - Тест нескольких контекстных меню и тонкая настройка
- - Тест прихода сообщений в пользовательский класс приложения
Графические интерфейсы II: Элемент «Главное меню» (Глава 4)
- - Разработка класса для создания главного меню
- - Тест установки главного меню
- - Блокировка неактивных элементов управления
- - Методы для взаимодействия с главным меню
- - Финальный тест главного меню
Список статей (глав) третьей части:
Графические интерфейсы III: Простые и многофункциональные кнопки (Глава 1)
- - Разработка класса для создания простой кнопки
- - Разработка класса для создания кнопки с картинкой
- - Разработка класса для создания сдвоенной кнопки
Графические интерфейсы III: Группы простых и многофункциональных кнопок (Глава 2)
- - Разработка класса для создания групп простых кнопок
- - Разработка класса для создания групп радио-кнопок
- - Разработка класса для создания групп кнопок с картинками
Список статей (глав) четвёртой части:
Графические интерфейсы IV: Информационные элементы интерфейса (Глава 1)
- - Элемент «Статусная строка»
- - Тест строки состояния
- - Элемент «Всплывающая подсказка»
- - Тест всплывающих подсказок
- - Персональный массив для всплывающих подсказок
Графические интерфейсы IV: Многооконный режим и система приоритетов (Глава 2)
- - Многооконный режим
- - Тест многооконного режима
- - Доработка системы приоритетов на нажатие левой кнопкой мыши
Список статей (глав) пятой части:
Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)
- - Элемент «Полоса прокрутки»
- - Базовый класс элемента
- - Производные классы элемента
Графические интерфейсы V: Элемент «Список» (Глава 2)
- - Элемент «Список»
- - Разработка класса для создания элемента
- - Тест установки списка
- - Методы для управления элементом
- - Ускоренная перемотка списка
Графические интерфейсы V: Элемент «Комбинированный список» (Глава 3)
- - Элемент «Комбинированный список»
- - Разработка класса для создания элемента
- - Методы для обработки событий элемента
- - Связывание класса элемента с движком библиотеки
- - Тест элемента в графическом интерфейсе пользовательского приложения
Список статей (глав) шестой части:
Графические интерфейсы VI: Чекбоксы, поля ввода и их смешанные типы (Глава 1)
- - Элемент «Чекбокс»
- - Разработка класса для создания элемента «Чекбокс»
- - Тест элемента «Чекбокс»
- - Элемент «Поле ввода»
- - Разработка класса для создания элемента «Поле ввода»
- - Тест элемента «Поле ввода»
- - Другие элементы управления с чекбоксами
Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)
- - Элемент «Слайдер»
- - Разработка класса для создания элемента «Слайдер»
- - Тест элемента «Слайдер»
- - Элемент «Двухсторонний слайдер»
- - Разработка класса для создания элемента «Двухсторонний слайдер»
- - Тест элемента «Двухсторонний слайдер»
Список статей (глав) седьмой части:
Графические интерфейсы VII: Элементы «Таблицы» (Глава 1)
- - Элемент «Таблица из текстовых меток»
- - Разработка класса CLabelsTable
- - Тест таблицы из текстовых меток
- - Элемент «Таблица из полей ввода»
- - Разработка класса CTable
- - Тест таблицы из полей ввода
- - Элемент «Нарисованная таблица»
- - Разработка класса CCanvasTable
- - Тест нарисованной таблицы
Графические интерфейсы VII: Элементы «Вкладки» (Глава 2)
- - Элемент «Вкладки»
- - Разработка класса для создания элемента «Вкладки»
- - Тест элемента «Вкладки»
Список статей (глав) восьмой части:
Графические интерфейсы VIII: Элементы «Календари» (Глава 1)
- - Элемент «Календарь»
- - Описание структуры CDateTime
- - Разработка класса CCalendar
- - Обработчики событий календаря
- - Тест элемента «Календарь»
- - Элемент «Выпадающий календарь»
- - Класс CDropCalendar
- - Тест элемента «Выпадающий календарь»
Графические интерфейсы VIII: Элемент «Древовидный список» (Глава 2)
- - Элемент «Древовидный список»
- - Разработка класса CTreeItem для создания пункта древовидного списка
- - Класс CPointer для создания указателя курсора мыши
- - Разработка класса CTreeView для создания древовидного списка
- - Параметры для формирования списков элемента
- - Методы для управления списками элемента
- - Управление шириной областей списков
- - Режим пунктов-вкладок
- - Методы для обработки событий
- - Интеграция элемента в движок библиотеки
- - Тест элемента «Древовидный список»
Графические интерфейсы VIII: Элемент «Файловый навигатор» (Глава 3)
- - Элемент «Файловый навигатор»
- - Разработка класса CFileNavigator
- - Тест файлового навигатора
Список статей (глав) девятой части:
Графические интерфейсы IX: Элемент "Цветовая палитра для выбора цвета" (Глава 1)
- - Элемент «Цветовая палитра для выбора цвета»
- - Разработка класса CColorPicker
- - Методы для обработки событий элемента
- - Кнопка для вызова цветовой панели
- - Тест элементов
Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)
- - Элемент «Индикатор выполнения»
- - Разработка класса CProgressBar
- - Тест индикатора выполнения
- - Элемент «Линейный график»
- - Доработка классов из стандартной библиотеки
- - Разработка класса CLineGraph
- - Пишем приложение для теста линейного графика
Список статей (глав) десятой части:
Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)
- - Список обновлений
- - Приложение для теста обновлений
Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 3)
- - Список обновлений
- - Приложение для теста обновлений
- - Разработка класса для создания элемента «Стандартный график»
- - Приложение для теста элемента
- - Оптимизация таймера и обработчика событий движка библиотеки
- - Оптимизация элементов "Древовидный список" и "Файловый навигатор"
- - Новые ярлыки для папок и файлов в файловом навигаторе
- - Элемент "Текстовое поле ввода"
- - Класс для создания элемента "Текстовое поле ввода"
- - Элемент "Слайдер картинок"
- - Класс для создания элемента "Слайдер картинок"
- - Элементы "Текстовая метка" и "Картинка"
- - Класс CFonts для работы со шрифтами
- - Список дополнительных обновлений библиотеки
- - Приложение для теста элемента
- - Элемент "Время"
- - Класс для создания элемента "Время"
- - Элемент "Список с чекбоксами"
- - Класс для создания списка из чекбоксов
- - Сортировка таблицы
- - Другие обновления библиотеки
- - Приложение для теста элемента
- - Изменения в схеме библиотеки и оптимизация кода
- - Программное управление полосой прокрутки
- - Программное управление списками
- - Оптимизация кода таблицы типа CTable
- - Программное управление таблицей типа CTable
- - Приложение для теста элемента
- - Группы клавиш и клавиатурные раскладки
- - Обработка события нажатия клавиш
- - ASCII-коды символов и управляющих клавиш
- - Скан-коды клавиш
- - Вспомогательный класс для работы с клавиатурой
- - Элемент 'Многострочное текстовое поле ввода'
- - Разработка класса CTextBox для создания элемента
- - Свойства и внешний вид
- - Управление текстовым курсором
- - Ввод символа
- - Обработка нажатия клавиши 'Backspace'
- - Обработка нажатия клавиши 'Enter'
- - Обработка нажатия клавиш 'Left' и 'Right'
- - Обработка нажатия клавиш 'Up' и 'Down'
- - Обработка нажатия клавиш 'Home' и 'End'
- - Обработка одновременного нажатия клавиш в сочетании с клавишей 'Ctrl'
- - Интеграция элемента в движок библиотеки
- - Приложение для теста элемента
Графические интерфейсы X: Новые возможности для нарисованной таблицы (build 9)
- - Форматирование в стиле "Зебра"
- - Выделение и снятие выделения строк таблицы
- - Заголовки для столбцов
- - Корректировка длины строки относительно ширины столбца
- - Обработка событий
Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
- - Относительные координаты курсора мыши на указанном холсте для рисования
- - Изменения в структуре таблицы
- - Определение диапазона строк в области видимости
- - Картинки в ячейках таблицы
- - Подсветка строки таблицы при наведении курсора мыши
- - Методы для быстрой перерисовки ячейки таблицы
- - Приложение для теста элемента
Комментариев нет :
Отправить комментарий