Как сделать элемент управления
Добавил пользователь Владимир З. Обновлено: 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 и т.д.), но лучше дать более понятное.
- В поле Описание вводим Сортировка по полю Фамилия в алфавитном порядке (описания помогут найти нужный, когда список макросов разрастется).
- Можно назначить макросу комбинацию клавиш быстрого вызова (например + ).
- Сохранить в: Эта книга (оставляем):
Далее выполняем все действия, необходимые при сортировке текстового столбца в алфавитном порядке. Они подробно рассмотрены в разделе Сортировка списков.
Запуск макроса
- Комбинация клавиш быстрого вызова, если вы ее указывали (например + ).
- Через меню: Разработчик → Код → Макросы ( + ). Выбираем в списке требуемый макрос и нажимаем кнопку Выполнить:
Создание кнопки для запуска макроса
Для того, чтобы поместить на рабочий лист 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, вертикальную привязку рекомендуется устанавливать в НеПривязано;
- рамку рекомендуется устанавливать в НетРамки . В сложных случаях, когда пользователю может быть тяжело догадаться о наличие разделителя, допускается устанавливать рамку Одинарная .
Разделитель обладает способностью "захватываться" мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя.
При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.
Таким образом, элемент управления "Разделитель" позволяет перераспределять внутреннее пространство формы, изменяя размеры расположенных в ней элементов управления, привязанных к разделителю. Размеры самой формы при этом не меняются.
Команды формы редактируются в списке. Разработчик имеет возможность:
- добавить, удалить команды формы;
- задать свойства команд с помощью палитры свойств;
- назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.
Для добавления команды в виде кнопки:
- на обычной форме можно разместить на форме элемент управления "Кнопка", назначить обработчик события "Нажатие" и определить алгоритм в модуле формы;
- на управляемой форме можно:
- добавить в форму элемент управления "Кнопка", назначить команду из списка команд формы и определить алгоритм команды в модуле формы;
- добавить команду формы в командный интерфейс формы и включить ее видимость.
На закладках "Стандартные команды" и "Глобальные команды" разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.
С помощью мыши разработчик может перетащить команду в командный интерфейс формы (платформа автоматически нарисует кнопку). Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме (платформа автоматически нарисует кнопку).
Для кнопки можно определить процедуру-обработчик для события "Нажатие"; тем самым кнопка программируется для выполнения некого стандартного действия:
В качестве обработчика события "Нажатие" элемента управления "Кнопка" может быть выбрано:
- стандартное действие;
- процедура модуля формы, в которой расположена кнопка.
Глобальную процедуру инициировать напрямую по кнопке нельзя.
Поясняющая информация на элементе управления "Кнопка" может быть представлена в виде:
- только надписи;
- только картинки;
- одновременно, картинки и надписи.
При нажатии на элемент управления "Кнопка" можно осуществить вызов подменю, если в качестве значения свойства "Режим меню" выбрать "Использовать" или "Использовать дополнительно".
Элементы управления формы 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; после этого увеличиваться не будет.
Читайте также: