Как сделать элемент управления

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

Системный класс Предназначение
BUTTON Кнопка.
COMBOBOX Комбинированное окно (окно со списком и поля выбора).
EDIT Окно редактирования текста.
LISTBOX Окно со списком
SCROLLBAR Полоса прокрутки
STATIC Статический элемент (текст)


Создание элементов управления окна осуществляется функцией

HWND WINAPI CreateWindow (
_In_opt_ LPCTSTR lpClassName, // имя предопределенного класса
_In_opt_ LPCTSTR lpWindowName, // текст
_In_ D WORD dwStyle, // стиль
_In_ int x, // координата x
_In_ int y, // координата y
_In_ int nWidth, // ширина
_In_ int nHeight, // высота
_In_opt_ HWND hWndParent, // дескриптор родительского окна
_In_opt_ HMENU hMenu, // номер пункта меню
_In_opt_ HINSTANCE hInstance, // дескриптор приложения
_In_opt_ LPVOID lpParam ); // NULL

Указанная функция возвращает дескриптор элемента управления окна, который может быть впоследствии использован для анализа элемента управления, с которым связано обрабатываемое событие. Дескриптор кнопки, например, передается в оконную функцию в качестве параметра lparam .

Таблицу стилей элементов управления окна можно устанавливать в параметре dwStyle как и для создания родительского окна. При этом обязательно указывается, что создаваемое окно является дочерним — WS_CHILD .

Кнопка

Обработка нажатия кнопки:

LONG WINAPI WndProc( HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) <
.
switch (Message) <
case WM_COMMAND :
if (lparam == ( LPARAM )hBtn) <
//обработка нажатия кнопки
>
break ;
.
>
>

Поле редактирования

Поле редактирования

Поле редактирования — прямоугольное дочернее окно, внутри которого пользователь может напечатать с клавиатуры текст. Пользователь выбирает орган управления и дает ему фокус клавиатуры, щелкая по нему мышью или перемещая в него, каретку путем нажатия клавиши ТАБУЛЯЦИИ (TAB). Пользователь может вводить текст, когда окно редактирования текста отображает мигающую каретку.

Для считывания информации из поля редактирования используется функция

int WINAPI GetWindowText(
_In_ HWND hWnd, // дескриптор поля
_Out_ LPTSTR lpString, // указатель на текстовую строку
_In_ int nMaxCount ); // максимальное количество символов

Возвращаемое значение – длина считанной текстовой строки.

Для установки текста в поле редактирования используется функция

BOOL WINAPI SetWindowText(
_In_ HWND hWnd, // дескриптор поля
_In_opt_ LPCTSTR lpString ); // указатель на текстовую строку

В случае успешного завершения функция возвращает ненулевое значение.

Статический текст

Статический текст — текстовое поле, окно или прямоугольник, используемый для надписей, не подлежащих редактированию.

Для установки статического текста используется та же функция SetWindowText .

Сумма двух чисел


Результат выполнения

Макрос - это программа (процедура без параметров), написанная на языке VBA (Visual Basic for Applications), которая автоматизирует какую-либо задачу. Это может быть выполнение каких-либо повторяющихся действий пользователя по форматированию внешнего вида ячеек или одинаковых действий над записями таблицы, например сортировка и т.п. По форме макрос – это записанный по определенным правилам текст программы, который хранится в тех же файлах, что и листы рабочей книги, в особых областях, называемых модулями.

Простейший макрос для форматирования

Прежде всего нужно изменить уровень безопасности (иначе работа с макросами будет невозможна): кнопка OfficeПараметры Excel (внизу) → Центр управления безопасностью (слева) → Параметры центра управления безопасностью (справа):

Настройки

Настройки

Если вкладка Разработчик недоступна, то необходимо выполнить следующие действия: кнопка OfficeПараметры Excel (внизу) → Основные (слева) → поставить “галочку” в пункте Показывать вкладку “Разработчик” на ленте (справа):

Настройки

Создадим свой первый макрос. Для этого на вкладке Разработчик в группе Код нажимаем кнопку Запись макроса:

Начать

Запись макроса

Нажимаем кнопку OK. При этом начинается запись всех ваши действий. Для прекращения записи служит кнопка Остановить запись, которая появится на месте кнопки Запись макроса:

Остановить

Записываются все перемещения по листу, смена рабочих листов, выделение ячеек, нажатия на кнопки и т.п. Так что, если вы хотите, чтобы в дальнейшем макрос выполнял действия не над конкретной ячейкой, а над любой выбранной в этот момент ячейкой, то после включения записи макроса не перемещайтесь по листу - сразу начинайте операцию, которую нужно записать.

Пускай, например, это будет изменение формата ячейки. Измените шрифт (гарнитуру, размер, цвет, наклон), потом выберите выравнивание с переносом по словам и т.п.

Затем не забудьте остановить запись. Теперь ваше творение можно увидеть нажав кнопку Макрос в группе Код на вкладке Разработчик ( + ):

Макросы

Макросы

Создание макроса для сортировки

Создадим макрос для сортировки по алфавиту списка сотрудников по текстовому полю - Фамилия. Исходная таблица должна выглядеть как список (база данных), т.е. иметь одну строку с заголовками и отделена пустыми строками и столбцами от других данных. Перед началом работы создадим копию листа расчета зарплаты и переименуем новый лист в Создание макросов.

Исходная таблица

Далее выполняем следующие действия
  • Включаем запись макроса (РазработчикКодЗапись макроса).
  • Задаем макросу имя (в имени не должно быть пробелов). Можно оставить предложенные программой имена (Макрос1, Макрос2 и т.д.), но лучше дать более понятное.
  • В поле Описание вводим Сортировка по полю Фамилия в алфавитном порядке (описания помогут найти нужный, когда список макросов разрастется).
  • Можно назначить макросу комбинацию клавиш быстрого вызова (например + ).
  • Сохранить в: Эта книга (оставляем):

Запись макроса

Строка состояния

Далее выполняем все действия, необходимые при сортировке текстового столбца в алфавитном порядке. Они подробно рассмотрены в разделе Сортировка списков.

Запуск макроса

  1. Комбинация клавиш быстрого вызова, если вы ее указывали (например + ).
  2. Через меню: РазработчикКодМакросы ( + ). Выбираем в списке требуемый макрос и нажимаем кнопку Выполнить:

Запуск макроса

Создание кнопки для запуска макроса

Для того, чтобы поместить на рабочий лист Excel стандартную кнопку, необходимо на вкладке Разработчик в группе Элементы управления нажать кнопку Вставить:

Кнопка Вставить

Кнопка

Далее нужно нажать левую кнопку мыши и (не отпуская) обвести свободный прямоугольный участок на текущем листе, а затем выбрать нужный макрос из списка.

Для редактирования созданной кнопки нужно навести курсор на область кнопки, нажать правую кнопку мыши и в контекстном меню выбрать пункт Формат объекта….

Создание счетчика

Например, мы хотим с помощью счетчика изменять значение курса доллара от 25 рублей до 35 рублей с шагом 0,01. Величина шага изменения счетчика может быть только целым положительным числом. Поэтому для возможности изменения копеек поделим значение счетчика на 100, а начальное значение возьмем равным 25. Сначала создадим простую табличку:

Курс доллара

Далее (как и при создании стандартной кнопки) вызываем Элементы управления формы, затем выбираем значок Счетчик:

Счетчик

Вставляем счетчик на рабочий лист, изменяем его размеры и положение. Например, подгоняем размеры так, чтобы счётчик точно занимал область D15:D16:

Счетчик

Счетчик

В диалоговом окне Формат элемента управления на закладке Элемент управления устанавливаем требуемые параметры:

Счетчик

Создание раскрывающегося списка

Список

Далее (как и при создании других элементов управления) вызываем Элементы управления формы, затем выбираем значок Поле со списком:

Список

Список

Список

Создание флажка (галочки)

Как и при создании других элементов управления вызываем Элементы управления формы, затем выбираем значок Флажок:

Флажок

Теперь заменяем стандартный текст, для этого щелкаем по объекту правой кнопкой мыши и выбираем в контекстном меню пункт Изменить текст:

Флажок

Флажок

Если будет указана связь с ячейкой, то в нее будет записываться значение Истина при установленном флажке или Ложь при снятом флажке:

Флажок

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

Переключатели создаются аналогично предыдущим элементам управления. Создадим несколько переключателей:

Переключатели

Теперь щелкаем по любому объекту правой кнопкой мыши и выбираем в контекстном меню пункт Формат объекта…, затем выбираем закладку Элемент управления:

Переключатели

Если будет указана связь с ячейкой, то в нее будет записываться значение, соответствующее выбранному переключателю. На каждый переключатель можно назначить отдельный макрос:

Переключатели

Если не использовать группировку, то все переключатели на рабочем листе будут взаимозависимы. При включении одного из них, все остальные будут выключаться.

Для создания независимых групп переключателей используется элемент управления Группа , который вставляется на рабочий лист так же как и все перечисленные выше элементы управления и имеет вид рамки (с надписью или без):

Переключатели

Элемент управления Группа можно использовать также для чисто декоративных целей. Он не связывается ни с какими ячейками, хотя и этому элементу можно назначить макрос.

Фильтрация по точному значению с помощью макросов и элементов управления

Фильтрация по точному значению

Эти элементы управления должны управлять отображением данных в рассмотренной ранее исходной таблице (выводить строки с конкретной фамилией или же все строки):

Исходная таблица

1. Сначала создадим макрос для отображения всех строк и привяжем его к переключателю.

Далее выполняем действия, необходимые для вывода всех записей в Автофильтре. Работа с Автофильтром подробно рассмотрена в разделе Фильтрация данных.

Выделить все

2. Теперь сделаем так, чтобы поле со списком формировало диапазон условий для Расширенного фильтра.

Список фамилий

Устанавливаем связь Поля со списком с какой-нибудь ячейкой на рабочем листе (например, L42). Для этого щелкаем по Полю со списком правой кнопкой мыши и выбираем в контекстном меню пункт Формат объекта…, потом выбираем закладку Элемент управления:

Список

В ячейках J42:J43 создадим Диапазон условий для Расширенного фильтра. В первую ячейку запишем название столбца Фамилия, во вторую - формулу, которая выбирает нужную фамилию из списка по номеру в списке:

Список

Список

3. Создаем макрос для Расширенного фильтра и привязываем его к переключателю.

Далее выполняем действия, необходимые для фильтрации данных в столбце по точному значению, заданному в диапазоне условий. Такая фильтрация подробно рассмотрена в разделе Расширенный фильтр.

Расширенный фильтр

Оставляем в пункте Обработка - фильтровать список на месте, Исходный диапазон – должен быть уже указан, Диапазон условий: J42:J43, кнопка OK.

Теперь у нас при выборе того или другого переключателя будут отображаться все строки или только строки с заданной фамилией.

Однако у такого способа управления есть один недостаток. При изменении фамилии в поле со списком режим отображения таблицы будет изменяться ТОЛЬКО ПРИ НАЖАТИИ на переключатель Выбрать.

Было бы неплохо, чтобы при изменении фамилии в поле со списком вид таблицы сразу же менялся. Это можно сделать привязав макрос Фильтр_по_точному_значению еще и к полю со списком (мы можем привязывать один и тот же макрос к разным элементам управления), но тогда вид таблицы при изменении фамилии будет изменяться всегда, даже при выбранном переключателе Показать всех.

Сначала привязываем поле со списком к макросу Фильтр_по_точному_значению. Затем устанавливаем связь переключателя Выбрать с вспомогательной ячейкой (правая кнопка мыши, Формат объекта…, на закладке Элемент управления, Связь с ячейкой: L44). Теперь, при включенном переключателе Выбрать в ячейке L44) будет единица, при включенном переключателе Показать всех - будет двойка.

Изменяем формулу в Диапазоне условий для Расширенного фильтра на эту =ЕСЛИ(L44=1; ИНДЕКС(H42:H47; L42); ””):

Расширенный фильтр

Последний параметр функции ЕСЛИ - пустая строка (две кавычки без промежутка между ними). Теперь при включенном переключателе Показать всех на месте формулы в режиме значений будет пустая ячейка и, следовательно, фильтрации не будет.

Элементы управления - это объекты формы, определяющие визуальное представление формы и предназначенные для интерактивного взаимодействия с пользователем (например, кнопки, флажки, поля ввода и т.д., визуальное объединение "элементарных" элементов управления).

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

Для обычных форм элементы управления настраиваются только конфигуратором, а для управляемых возможны определенные корректировки элементов в режиме 1С:Предприятие.

В элементах управления данные не хранятся!

Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров.

Платформа в режиме 1С:Предприятие для управляемых форм самостоятельно добавляет эти элементы в форму.

При построении обычных форм используются вертикальные и горизонтальные разделители.

Элемент управления Разделитель позволяет пользователю менять пространство формы, сдвигая ее части. Разделитель может быть как с отображением, так и невидимый.

Наличие разделителя должно интуитивно угадываться при работе с формой, поэтому ближайшие от разделителя по направлениям его передвижения элементы управления размещаются вплотную к нему, таким образом визуально предполагая его расположение:

  • вертикальным разделителям устанавливается ширина 6, горизонтальную привязку рекомендуется устанавливать в НеПривязано ;
  • горизонтальным разделителям устанавливается высота 6, вертикальную привязку рекомендуется устанавливать в НеПривязано;
  • рамку рекомендуется устанавливать в НетРамки . В сложных случаях, когда пользователю может быть тяжело догадаться о наличие разделителя, допускается устанавливать рамку Одинарная .

Разделитель обладает способностью "захватываться" мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя.

При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.

Таким образом, элемент управления "Разделитель" позволяет перераспределять внутреннее пространство формы, изменяя размеры расположенных в ней элементов управления, привязанных к разделителю. Размеры самой формы при этом не меняются.

Команды формы редактируются в списке. Разработчик имеет возможность:

  • добавить, удалить команды формы;
  • задать свойства команд с помощью палитры свойств;
  • назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.

Для добавления команды в виде кнопки:

  1. на обычной форме можно разместить на форме элемент управления "Кнопка", назначить обработчик события "Нажатие" и определить алгоритм в модуле формы;
  2. на управляемой форме можно:
    • добавить в форму элемент управления "Кнопка", назначить команду из списка команд формы и определить алгоритм команды в модуле формы;
    • добавить команду формы в командный интерфейс формы и включить ее видимость.

На закладках "Стандартные команды" и "Глобальные команды" разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.

С помощью мыши разработчик может перетащить команду в командный интерфейс формы (платформа автоматически нарисует кнопку). Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме (платформа автоматически нарисует кнопку).

Для кнопки можно определить процедуру-обработчик для события "Нажатие"; тем самым кнопка программируется для выполнения некого стандартного действия:

В качестве обработчика события "Нажатие" элемента управления "Кнопка" может быть выбрано:

  1. стандартное действие;
  2. процедура модуля формы, в которой расположена кнопка.

Глобальную процедуру инициировать напрямую по кнопке нельзя.

Поясняющая информация на элементе управления "Кнопка" может быть представлена в виде:

  1. только надписи;
  2. только картинки;
  3. одновременно, картинки и надписи.

При нажатии на элемент управления "Кнопка" можно осуществить вызов подменю, если в качестве значения свойства "Режим меню" выбрать "Использовать" или "Использовать дополнительно".

Элементы управления формы Excel — это объекты, которые можно вставить в любое место на листе для работы с данными и обработки данных, как указано. Используя эти элементы управления формы в Excel, мы можем создать раскрывающийся список в Excel, списки, счетчики, флажки, полосы прокрутки.

Как использовать элементы управления формы в Excel?

Теперь посмотрим, как работать с каждым из них подробно.

Вы можете скачать этот шаблон Excel с элементами управления формой здесь — Шаблон Excel с элементами управления формой

Элемент управления формы 1: кнопка

Это просто нарисовать кнопку и присвоить ей любое имя макроса, чтобы назначенный макрос запускался при нажатии на эту кнопку.

Элемент управления формой 2: поле со списком

Поле со списком — это просто наш раскрывающийся список, и он работает точно так же, как раскрывающийся список, но поле со списком excel рассматривается как объект.

Теперь, чтобы вставить значения, создайте список дней в столбце A.

Теперь мы должны увидеть список выбранных дней в поле со списком.

Элемент управления формой 3: CheckBox

CheckBox используется для отображения выбора элемента. Если он отмечен, мы можем ссылаться на определенную ячейку, чтобы отображать выбор как ИСТИНА и ЛОЖЬ, если он не отмечен.

Нарисуйте флажок на листе.

Установите флажок, чтобы увидеть ИСТИННОЕ значение в ячейке D3.

Теперь снимите флажок, чтобы увидеть значение FALSE.

Элемент управления формы 4: кнопка вращения

Теперь, если вы нажмете стрелку вверх на кнопке прокрутки в ячейке A2 one, мы сможем увидеть инкрементное значение.

И если вы нажмете стрелку вниз на кнопке прокрутки в ячейке A2, мы увидим, что каждый раз она будет уменьшаться на единицу.

Другое дело, что в окне управления форматом мы установили минимальное значение 1, а максимальное — 12.

Поэтому, когда вы нажимаете стрелку вверх, она увеличивается на 1, пока не достигнет 12; после этого не увеличится.

Элемент управления формы 5: список

Используя поле списка в Excel, мы можем создать список элементов; давайте сначала нарисуем коробку, а затем настроим ее.

Для этого списка мы создадим список дней.

Теперь посмотрите список дней в поле со списком.

Теперь выберите любой элемент из списка, чтобы увидеть, что мы получаем в связанной ячейке C10.

Элемент управления формы 6: групповое поле

Используя Group Box, мы можем создать в нем несколько элементов управления. Мы не можем взаимодействовать с этим; скорее, это позволяет нам сгруппировать другие элементы управления под одной крышей.

Нарисуйте рамку группы на листе.

Вставьте переключатели, которые хотите сгруппировать.

Элемент управления формы 7: метка

Ярлык не взаимодействует с пользователями. Это будет отображать только введенное значение или значение, указанное в ячейке, то есть приветствие.

Элемент управления формы 8: полоса прокрутки

Используя полосу прокрутки в Excel, мы можем увеличивать и уменьшать значение связанной ячейки. Это похоже на кнопку Spin, но на полосе прокрутки мы можем видеть, как прокрутка перемещается при увеличении и уменьшении.

Нарисуйте полосу прокрутки на листе.

Поэтому, когда вы нажимаете стрелку вверх, она увеличивается на 1, пока не достигнет 12; после этого увеличиваться не будет.

Читайте также: