Skip to content

Latest commit

 

History

History
112 lines (86 loc) · 7.84 KB

File metadata and controls

112 lines (86 loc) · 7.84 KB

Класс VBA Multi-State Checkbox

Русский | English | UserForms-Class-ALL

Демонстрация проекта

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

Содержание

  1. Возможности
  2. Компоненты
  3. Установка
  4. Быстрый старт
  5. Основные функции
  6. Работа с элементами управления
  7. Настройка стиля
  8. Устранение неполадок

Возможности

  • Трехпозиционный флажок (снят, установлен, неопределён)
  • Настраиваемый внешний вид и поведение
  • Простая интеграция с VBA UserForms
  • Повторно используемый модуль класса для согласованного поведения флажка
  • Циклическое/непрерывное переключение состояний (свойство Cyclic)
  • Возможность установки/получения состояния по тексту (свойство StateText)
  • Метод для получения всех доступных состояний (GetAllStates)
  • Улучшенная обработка ошибок и проверки
  • Возможность установки имени шрифта и коэффициента размера (свойства FontName и FontSizeFactor)
  • Возможность получения/установки текущего значка (свойство CurrentIcon)
  • Метод для установки цвета для конкретного состояния (SetStateColor)
  • Метод для сброса в начальное состояние (ResetToInitialState)

Компоненты

  • clsMultiStateCheckBox.cls: Основная реализация класса флажка
  • frmTestClass.frm: Тестовая форма, демонстрирующая использование
  • modShowForms.bas: Модуль, содержащий функции отображения форм
  • Документация в папке docs/:
  • docs/technical_documentation_rus.md - Техническая документация на русском языке
  • docs/technical_documentation_eng.md - Техническая документация на английском языке
  • docs/user_guide_rus.md - Руководство пользователя на русском языке
  • docs/user_guide_eng.md - Руководство пользователя на английском языке
  • docs/implementation_examples_rus.md - Примеры реализации на русском языке
  • docs/implementation_examples_eng.md - Примеры реализации на английском языке

Установка

  1. Скачайте файл clsMultiStateCheckBox.cls из каталога vba-files/Class/
  2. Импортируйте класс в ваш проект VBA
  3. Убедитесь, что вашем проекте есть ссылка на Microsoft Forms 2.0 Object Library

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

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

' Создайте экземпляр класса clsMultiStateCheckBox
Set MultiStateCheckBox = New clsMultiStateCheckBox

' Инициализируйте флажок с использованием элемента Label
Call MultiStateCheckBox.Initialize(Me.Label1)

' Класс автоматически применяет многопозиционную функциональность к элементу управления

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

  • Инициализация флажка: Метод Initialize позволяет установить начальное состояние и настроить внешний вид флажка
  • Управление состояниями: Поддержка трех и более состояний (снят, установлен, неопределён и другие)
  • Настройка цветов: Возможность настройки цветов для каждого состояния
  • Поддержка иконок: Использование иконок для различных состояний флажка
  • Циклическое переключение: Возможность включения/отключения циклического переключения между состояниями

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

Класс clsMultiStateCheckBox преобразует обычный элемент Label в многопозиционный флажок с возможностью:

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

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

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

  • Цвета для каждого состояния флажка
  • Иконки для каждого состояния
  • Шрифты и размеры текста
  • Поведение при взаимодействии (цикличность, сброс в начальное состояние)

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

' Настройка цветов для различных состояний
Dim colors As Variant
colors = Array(vbRed, vbGreen, vbBlue) ' Цвета для каждого состояния
MultiStateCheckBox.Initialize Me.Label1, 0, Array(59193, 59194, 59195), colors

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

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

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

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

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

Лицензия

Этот проект лицензирован в соответствии с Apache License 2.0 - см. файл LICENSE для получения подробностей.