Skip to content

Latest commit

 

History

History
266 lines (216 loc) · 16.4 KB

File metadata and controls

266 lines (216 loc) · 16.4 KB

Руководство пользователя для clsMultiStateCheckBox

Содержание

  1. Введение
  2. Системные требования
  3. Установка и настройка
  4. Быстрый старт
  5. Основные функции
  6. Работа с элементами управления
  7. Настройка стиля
  8. Создание переключателей
  9. Добавление иконок
  10. Работа с коллекцией стиля
  11. Устранение неполадок
  12. Часто задаваемые вопросы

Введение

Класс clsMultiStateCheckBox реализует многопозиционный флажок для VBA UserForms с тремя и более состояниями: снят, установлен и неопределён, а также другими пользовательскими состояниями. Этот класс предоставляет настраиваемый внешний вид и поведение с возможностью легкой интеграции в VBA UserForms.

Что может делать этот проект:

  • Применять современный дизайн к элементам управления флажками
  • Обеспечивать многопозиционную функциональность за пределами стандартного флажка
  • Настройку цветов и шрифтов для флажков
  • Добавление иконок и визуальных элементов
  • Управление видимостью и состоянием элементов управления флажками

Системные требования

  • Microsoft Excel (2010 или новее рекомендуется)
  • Включенная поддержка VBA
  • Microsoft Forms 2.0 Object Library
  • Windows 7 или новее

Установка и настройка

Шаг 1: Импорт класса

  1. Откройте Excel и перейдите в редактор VBA (нажмите Alt+F11)
  2. В меню выберите "File" > "Import File"
  3. Выберите файл clsMultiStateCheckBox.cls из каталога vba-files/Class/
  4. Нажмите "Open" для импорта класса

Шаг 2: Настройка ссылок

  1. В редакторе VBA выберите "Tools" > "References"
  2. Найдите и установите флажок напротив "Microsoft Forms 2.0 Object Library"
  3. Нажмите "OK" для сохранения изменений

Шаг 3: Создание пользовательской формы

  1. В редакторе VBA создайте новую пользовательскую форму
  2. Добавьте элемент управления Label, который будет служить флажком
  3. Добавьте переменную класса в форму:
Dim MultiStateCheckBox As clsMultiStateCheckBox

Быстрый старт

Простой пример использования

  1. Создайте новую пользовательскую форму в Excel
  2. Добавьте элемент управления Label для использования в качестве флажка
  3. В событии UserForm_Initialize добавьте следующий код:
Private Sub UserForm_Initialize()
    Set MultiStateCheckBox = New clsMultiStateCheckBox
    Call MultiStateCheckBox.Initialize(Me.Label1)
End Sub
  1. Запустите форму, чтобы увидеть элемент управления многопозиционного флажка

Пример с настройкой цветов

Private Sub UserForm_Initialize()
    Set MultiStateCheckBox = New clsMultiStateCheckBox
    Dim icons As Variant
    icons = Array(59193, 59194, 59195) ' Снят, установлен, неопределён
    Dim colors As Variant
    colors = Array(vbRed, vbGreen, vbBlue) ' Цвета для каждого состояния
    Call MultiStateCheckBox.Initialize(Me.Label1, 0, icons, colors)
End Sub

Основные функции

Инициализация флажка

Метод Initialize - это основной способ настройки многопозиционного флажка:

  • Устанавливает начальное состояние (снят, установлен, неопределён и т.д.)
  • Настраивает свойства внешнего вида
  • Создает обработчики событий для взаимодействия
  • Создает визуальные элементы для разных состояний

Поддерживаемые состояния

  • Состояние снятия (обычно представлено пустым квадратом)
  • Состояние установки (обычно представлено галочкой)
  • Неопределенное состояние (обычно представлено тире или заполненным квадратом)
  • Дополнительные пользовательские состояния могут быть определены

Работа с элементами управления

Конфигурация флажка

Для флажков класс автоматически:

  • Применяет указанные значки состояний
  • Создает визуальные элементы для разных состояний
  • Обрабатывает события клика для переключения между состояниями
  • Обеспечивает визуальную обратную связь во время взаимодействия
  • Обрабатывает события мыши для взаимодействия

Управление состояниями

Класс позволяет настраивать:

  • Начальное состояние
  • Поведение перехода между состояниями (циклическое/непрерывное)
  • Значки для каждого состояния
  • Цвета для каждого состояния
  • Текстовое представление состояний

Обработка событий

Класс предоставляет события для:

  • Изменения состояния во время взаимодействия
  • События клика на флажке
  • Визуальная обратная связь во время изменения состояния

Настройка стиля

Цветовые схемы

Класс предоставляет широкие возможности настройки цветов:

  • Цвета, специфичные для состояний
  • Цвета значков для разных состояний
  • Цвета фона (если применимо)
  • Цвета текста для меток состояний

Настройка через метод Initialize

Цвета можно настроить при инициализации:

Dim colors As Variant
colors = Array(vbRed, vbGreen, vbBlue)
MultiStateCheckBox.Initialize Me.Label1, 0, Array(59193, 59194, 59195), colors

Динамическая настройка

После инициализации можно изменить свойства:

With MultiStateCheckBox
    .SetStateColor 1, RGB(255, 0, 0)  ' Установить красный цвет для второго состояния
    .CurrentIcon = 59194  ' Установить текущий значок в состояние снятия
End With

Настройка шрифтов

Класс позволяет:

  • Устанавливать имя шрифта для значков (обычно Segoe MDL2 Assets)
  • Настройка коэффициента размера шрифта через свойство FontSizeFactor

Создание переключателей

Класс clsMultiStateCheckBox может использоваться для создания переключателей:

  • Установка соответствующих значков для каждого состояния
  • Настройка свойства Cyclic для управления переключением состояний
  • Использование метода SetStateColor для настройки внешнего вида для каждого состояния

Простой переключатель

Private Sub UserForm_Initialize()
    Set MultiStateCheckBox = New clsMultiStateCheckBox
    ' Создание простого переключателя вкл/выкл с пользовательскими значками
    Dim icons As Variant
    icons = Array(60434, 60433) ' Значки переключателя выкл/вкл
    Call MultiStateCheckBox.Initialize(Me.Label1, 0, icons)
    MultiStateCheckBox.Cyclic = True  ' Включить циклическое переключение между состояниями
End Sub

Добавление иконок

Использование встроенных иконок

Класс использует шрифт Segoe MDL2 Assets для иконок:

  • Состояние снятия: 59193 (пустой квадрат)
  • Состояние установки: 59194 (квадрат с галочкой)
  • Неопределенное состояние: 59195 (квадрат с тире)
  • Различные другие иконки доступны в перечислении enumIcons

Установка иконок

Для настройки значков флажка:

  1. Создайте массив кодов иконок
  2. Передайте его в метод Initialize:
Dim customIcons As Variant
customIcons = Array(59193, 59194, 59195) ' Снят, установлен, неопределён
MultiStateCheckBox.Initialize Me.Label1, 0, customIcons

Настройка иконок

  • Иконки отображаются с использованием шрифта Segoe MDL2 Assets по умолчанию
  • Цвет иконки изменяется в зависимости от состояния флажка
  • Иконки автоматически масштабируются под размер элемента управления

Работа с коллекцией стиля

Доступ к отдельным элементам

После инициализации флажок предоставляет доступ к своим свойствам:

' Получение свойств флажка
Dim currentState As Byte
currentState = MultiStateCheckBox.Item
Dim stateText As String
stateText = MultiStateCheckBox.StateText

Получение количества элементов

Класс флажка управляет одним элементом управления, но предоставляет доступ к его свойствам.

Перебор всех элементов

Класс флажка сосредоточен на одном элементе управления, поэтому итерация обычно не требуется.

Изменение свойств отдельных элементов

' Изменение свойств флажка
With MultiStateCheckBox
    .Item = 1  ' Установить в состояние снятия
    .StateText = ChrW(59194)  ' Установить текст состояния в значок снятия
    .Cyclic = False  ' Отключить циклическое переключение
End With

Устранение неполадок

Проблемы с отображением

  • Убедитесь, что Microsoft Forms 2.0 Object Library включена в ссылки
  • Проверьте, что элемент управления Label добавлен до вызова метода Initialize
  • Убедитесь, что свойство MultiUse установлено в True для класса

Проблемы с взаимодействием

  • Проверьте, что события элемента управления не перегружены другими обработчиками
  • Убедитесь, что свойства элемента управления не изменяются вручную во время работы класса
  • Проверьте, что класс не инициализируется несколько раз

Проблемы с производительностью

  • Уменьшите количество изменений состояния во время инициализации
  • Избегайте частых вызовов геттеров свойств во время взаимодействия
  • Используйте свойства видимости и доступности должным образом

Распространенные ошибки

  • "Object variable not set" - убедитесь, что переменная класса правильно инициализирована
  • "Method or data member not found" - проверьте, что класс правильно импортирован
  • "Can't assign to property" - избегайте прямого присвоения вложенным объектам без проверки на Nothing

Часто задаваемые вопросы

Вопрос: Как изменить цвета после инициализации?

Ответ: Используйте метод SetStateColor для установки цветов для конкретных состояний после инициализации.

Вопрос: Поддерживаются ли все типы элементов управления?

Ответ: Класс специально поддерживает многопозиционную функциональность флажка с использованием элементов управления Label.

Вопрос: Можно ли использовать несколько экземпляров класса?

Ответ: Да, можно создать несколько экземпляров класса для разных флажков, но каждый экземпляр управляет одним элементом управления флажком.

Вопрос: Как добавить пользовательские иконки?

Ответ: Класс использует значения символов Unicode для иконок. Для пользовательских иконок можно использовать разные коды символов или рассмотреть использование элементов управления изображениями.

Вопрос: Совместим ли класс с разными версиями Excel?

Ответ: Класс протестирован с Excel 2010 и новее. Совместимость с более ранними версиями не гарантируется.

Вопрос: Можно ли настроить анимацию?

Ответ: Текущая версия обеспечивает визуальную обратную связь во время изменения состояния, но прямая настройка анимации недоступна.

Вопрос: Как обработать события элементов флажка?

Ответ: Класс предоставляет события Click и изменения состояния, которые можно обрабатывать в модуле формы.