- •Содержание
- •Введение в программирование под Windows
- •Событийно-управляемое программирование
- •Шаблон Windows-приложения
- •Класс Control
- •Элементы управления
- •Метка Label
- •Кнопка Button
- •Поле ввода TextBox
- •Меню MainMenu и ContextMenu
- •Флажок CheckBox
- •Переключатель RadioButton
- •Панель GroupBox
- •Список ListBox
- •Предварительные замечания о формах.
- •Класс Form
- •Диалоговые окна
- •Класс Application
- •Краткое введение в графику
- •Индивидуальные задания
- •Вариант 0
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Пример выполнения варианта №0
Класс Control
Класс Control является базовым для всех отображаемых элементов, то есть элементов, которые составляют графический интерфейс пользователя, например, кнопок, списков, полей ввода и форм. Класс Control реализует базовую функциональность интерфейсных элементов. Он содержит методы обработки ввода пользователя с помощью мыши и клавиатуры, определяет размер, положение, цвет фона и другие характеристики элемента. Для каждого объекта можно определить родительский класс, задав свойство Parent, при этом объект будет иметь, например, такой же цвет фона, как и его родитель.
Наиболее важные свойства класса Control перечислены в таблице 9.2, методы — в таблице 9.3.
Таблица 9.2 - Основные свойства класса Control
Свойство |
Описание |
Anchor |
Определяет, какие края элемента управления будут привязаны к краям родительского контейнера. Если задать привязку всех краев, элемент будет изменять размеры вместе с родительским |
BackColor, BackgroundImage, Font, ForeColor, Cursor |
Определяют параметры отображения рабочей области формы: цвет фона, фоновый рисунок, шрифт, цвет текста, вид указателя мыши |
Bottom, Right |
Координаты нижнего правого угла элемента. Могут устанавливаться также через свойство Size |
Top, Left |
Координаты верхнего левого угла элемента. Эквивалентны свойству Location |
Bounds |
Возвращает объект типа Rectangle (прямоугольник), который определяет размеры элемента управления |
ClientRectangle |
Возвращает объект Rectangle, определяющий размеры рабочей области элемента |
ContextMenu |
Определяет, какое контекстное меню будет выводиться при щелчке на элементе правой кнопкой мыши |
Dock |
Определяет, у какого края родительского контейнера будет отображаться элемент управления |
Location |
Координаты верхнего левого угла элемента относительно верхнего левого угла контейнера, содержащего этот элемент, в виде структуры типа Point. Структура содержит свойства X и Y |
Height, Width |
Высота и ширина элемента |
Size |
Высота и ширина элемента в виде структуры типа Size. Структура содержит свойства Height и Width |
Created, Disposed, Enabled, Focused, Visible |
Возвращают значения типа bool, определяющие текущее состояние элемента: создан, удален, использование разрешено, имеет фокус ввода, видимый |
Handle |
Возвращает дескриптор элемента (уникальное целочисленное значение, сопоставленное элементу) |
ModifierKeys |
Статическое свойство, используемое для проверки состояния модифицирующих клавиш (Shift, Control, Alt). Возвращает результат в виде объекта типа Keys |
MouseButtons |
Статическое свойство, проверяющее состояние клавиш мыши. Возвращает результат в виде объекта типа MouseButtons |
Opacity |
Определяет степень прозрачности элемента управления. Может изменяться от 0 (прозрачный) до 1 (непрозрачный) |
Parent |
Возвращает объект, родительский по отношению к данному (имеется в виду не базовый класс, а объект-владелец) |
Region |
Определяет объект Region, при помощи которого можно управлять очертаниями и границами элемента управления |
TabIndex, TabStop |
Используются для настройки последовательности перемещения с помощью клавиши Tab по элементам управления, расположенным на форме |
Таблица 9.3 - Основные методы класса Control
Метод |
Описание |
Focus |
Установка фокуса ввода на элемент |
GetStyle, SetStyle |
Получение и установка флагов управления стилем элемента. Используются значения перечисления ControlStyles (см. далее) |
Hide, Show |
Управление свойством Visible (Hide — скрыть элемент, Show — отобразить элемент) |
Invalidate |
Обновление изображения элемента путем отправки соответствующего сообщения в очередь сообщений. Метод перегружен таким образом, чтобы можно было обновлять не всю область, занимаемую элементом, а лишь ее часть |
OnXXXX |
Методы-обработчики событий (OnMouseMove, OnKeyDown, OnResize, OnPaint и т. п.), которые могут быть замещены в производных классах |
Refresh |
Обновление элемента и всех его дочерних элементов |
SetBounds, SetLocation, SetClientArea |
Управление размером и положением элемента |
Перечисление ControlStyles задает возможные значения стиля формы в виде битовых флагов, поэтому можно использовать их комбинации. Значения всех констант перечисления можно посмотреть в электронной документации, а для первого знакомства достаточно одного — ResizeRedraw. Этот стиль определяет, что при изменении размеров формы она будет автоматически перерисована. По умолчанию перерисовка не выполняется, и если на форме есть какое-либо изображение, результат изменения размеров формы может сильно озадачить.
В таблице 9.4 перечислена небольшая часть событий, определенных в классе Control.
Таблица 9.4 - Некоторые события класса Control
Событие |
Описание |
Click, DoubleClick, MouseEnter, MouseLeave, MouseDown, MouseUp, MouseMove, MouseWheel |
События от мыши |
KeyPress, KeyUp, KeyDown |
События от клавиатуры |
BackColorChanged, ContextMenuChanged, FontChanged, Move, Paint, Resize |
События изменения элемента |
GotFocus, Leave, LostFocus |
События получения и потери фокуса ввода |
Применение наиболее важных элементов, описанных в таблицах, рассматривается в следующих разделах.
При написании приложений применяется два способа обработки событий:
замещение стандартного обработчика;
задание собственного обработчика.
В большинстве случаев применяется второй способ. Среда разработки создает заготовку обработчика по двойному щелчку на поле, расположенном справа от имени соответствующего события на вкладке Events окна свойств. При этом в код приложения автоматически добавляется строка, регистрирующая этот обработчик.
Первый способ, то есть переопределение виртуальных методов OnXXXX (OnMouseMove, OnKeyDown, OnResize, OnPaint и т. п.), применяется в основном тогда, когда перед реакцией на событие требуется выполнить какие-либо дополнительные действия.