4. работа с кнопкамиКнопка является одним из основных элементов диалога во время выполнения приложения. С помощью кнопок пользователь подтверждает или отменяет решение о выполнении той или иной команды. Всем пользователям Windows знакомы такие кнопки, например, как Ok и Cancel. В Delphi предусмотрена возможность работать с двумя типами кнопок: командные кнопки; кнопки-переключатели. 4.1. Командные кнопки Нажатие командной кнопки приводит к немедленному выполнению некоторой операции. Типичным примером командной кнопки является кнопка Ok. В Delphi реализованы 3 вида командных кнопок: стандартная командная кнопка Button; командная кнопка с рисунком BitBtn кнопка быстрого доступа. SpeedButton. Для реализации стандартных командных кнопок в Delphi имеется компонент Button в палитре Standard. На форме такие кнопки выглядят следующим образом: Основным свойствам кнопки Button является Caption типа string. Это свойство содержит наименование кнопки (например, Cancel). Оно доступно в окне инспектора объектов и во время выполнения программы. Создание обработчика события кнопки Обработчик события – это процедура, которая реализует действие, выполняемое при наступлении данного события. Delphi автоматически создает шаблон-заготовку каждого обработчика события (исходный текст программы соответствующей процедуры), предусмотренного в закладке Events/События Инспектора объектов. Генерация шаблона-заготовки выполняется двойным щелчком мыши в поле значения соответствующего события закладки Events/События в Инспекторе объектов. Наиболее часто происходящим событием для кнопки Button является OnClick – щелчок левой кнопкой мыши в области кнопки. Обработчик события OnClick является самым простым и удобным средством для размещения в тексте приложения программной реализации Вашей задачи. Для того, чтобы попасть в текст программы заготовки обработчика события OnClick кнопки Button нужно дважды щелкнуть по кнопке на форме или в поле значения события OnClick в закладке Events (События) Инспектора объектов. Сразу после этого Вы окажетесь в окне редактора кодов в автоматически сформированном тексте заготовки обработчика события OnClick:
В качестве примера создания простейшего обработчика события рассмотрим задачу вычисления суммы двух чисел: введем два целых числа с помощью компонента Edit и по команде – нажатию кнопки “Вычислить» вычислим сумму введенных чисел, а результат вычисления выведем на экран процедурой ShowMessage. Форма, реализующая эту задачу будет выглядеть следующим образом:
Запустим приложение на выполнение. Введем два произвольных числа в поля ввода, и щелкнем кнопку “Вычислить». В итоге получим на экране следующее окно: Командная кнопка с рисунком – это кнопка Button, усовершенствованная путем добавления к имени кнопки рисунка. Этот вид кнопки реализован с помощью копоненты BitBtn , которая расположена в палитре Additional. BitBtn - потомок кнопки Button. Рисунок, который сопровождает имя кнопки может быть сформирован двумя способами:
В первом случае вид рисунка определяется свойством Glyph, активизация которого вызывает появление окна редактора картинки кнопки с рисунком: Нажав кнопку Открыть, можно выбрать файл с расширением bmp, который содержит требуемую картинку. Имя кнопки в этом случае задается свойством Caption. Взаимное расположение имени кнопки и картинки определяется свойствами Margin, Layout и Spacing. По умолчанию картинка располагается слева от имени кнопки. Во втором случае предоставляется возможность выбрать имя кнопки и картинку из предлагаемого стандартного набора с помощью свойства Kind. Это свойство позволяет выбрать одну из следующих кнопок:
Кнопка быстрого доступа реализована посредством компонента SpeedButton палитры Additional. Используется обычно для создания панелей инструментов или отдельных «горячих» кнопок, для которых фиксируется нажатое состояние. Основные свойства и техника применения аналогичны вышеописанным кнопкам. Отличия: на кнопке обычно изображается только рисунок без текста; имеется средство фиксации нажатого состояния кнопки – свойства GroupIndex и AllowAllUp: если GroupIndex >0 и AllowAllUp=True, то по щелчку мышкой по кнопке формируется изображение нажатой кнопки, которое фиксируется до следующего щелчка мыши. Повторный щелчок мыши по кнопке возвращает ее в исходное состояние. Если на форма имеется несколько таких кнопок с одинаковым ненулевым значением свойства GroupIndex, то они образуют группу взаимосвязанных кнопок, из которых в любой момент времени нажатой может быть только одна. 4.2. Кнопки-переключатели (флажки).
Пользователю предоставляется набор режимов, из которых он может выбрать нужные ему путем установки «галочки» напротив желаемого режима . В других случаях пользователь может выбрать только одно из предлагаемого множества значений. В первом случае мы имеем дело с независимыми переключателями, а во втором случае – с зависимыми переключателями. Независимые переключатели в Delphi реализованы посредством компонента CheckBox из палитры Standard. Если на форме (либо в другом контейнере) имеется несколько таких переключателей, то каждый из них функционирует независимо от других. На форме компонент CheckBox изображается в виде квадрата с галочкой (или без неё) и с текстовым обозначением - . Состояние независимого переключателя может задаваться тремя способами: в Инспекторе объектов на этапе визуального конструирования; оператором программы, задающим состояние переключателя; щелчком мыши по самому переключателю в процессе выполнения приложения. Состоянием переключателя управляют четыре свойства: Enabled, AllowGrayed, State и Checked. Свойство Enabled определяет доступность (True) или недоступность (False) переключателя во время выполнения программы. Если переключатель доступен, то его состояние определяется остальными тремя свойствами. Свойства State и Checked – взаимозависимы, т.е. изменение одного из них приводит к изменению другого. В общем случае независимый переключатель может находиться в одном из трех возможных состояний: включен, выключен и нейтрален. В каких конкретно состояниях может находиться переключатель, определяет свойство AllowGrayed. Если его значение равно True, то переключатель может быть переведен в состояние «нейтрален» любым из трех перечисленнях выше способов. Если же AllowGrayed=False, то переключатель может находиться только в одном из двух состояний – включен или выключен. Значения свойств State и Checked в зависимости от состояния переключателя показано в следующей таблице:
Свойство Caption определяет надпись на кнопке. Для проверки состояния переключателя в программе можно использовать оператор следующего вида: If CheckBox1. Checked= True Then . . . else . . .;
Зависимые переключатели предназначены для реализации альтернативного выбора - позволяют выбрать только одно из предлагаемого множества значений. Они реализованы в Delphi посредством компонента RadioButton из палитры Standard. Обычно используется в составе группы кнопок. Группа зависимых переключателей может выглядеть на форме, например, следующим образом:
Зависимые переключатели обычно формируются в группы. Каждая группа помещается в контейнер. Контейнером для группы переключателей может быть другой компонент, например, форма, панель Panel или группа GroupBox. Переключатели взаимозависимы только в пределах одного и того же контейнера. В отличие от независимого переключателя состояние выбранного (включенного) зависимого переключателя нельзя изменить повторным щелчком мыши. Основными свойствами компонента RadioButton являются свойства Caption, Enabled и Checked, порядок использования которых такой же, как и у компонента CheckBox. 4.3. Способы группирования переключателей. Для локализации размещения группы переключателей предназначены две компоненты: GroupBox и RadioGroup. Компонент GroupBox в общем случае предназначен для визуального выделения группы функционально связанных произвольных визуальных компонентов и представляет собой поименованный прямоугольник, внутри которого размещаются группируемые компоненты. Ниже на рисунке приведен пример группировки групп компонент двух типов – группы независимых переключателей (Группа1) и группы стандартных командных кнопок (Группа2).
Основные свойства компонента GroupBox такие же как и многих других – Caption, Color, Font и т.п. Какими-либо важными специфическими свойствами этот компонент не обладает. Размещается в палитре Standard. Компонент RadioGroup предназначен для функционального и визуального выделения группы радиокнопок (зависимых переключателей). Находится в палитре Standard. Представляет собой поименованный прямоугольник, внутри которого размещается группа радиокнопок:
Из всех радиокнопок группы включенной в любой момент времени может быть только одна. Имя группы (прямоугольника) задается свойством Caption. Обозначения кнопок внутри группы и их количество определяется свойством Items, которое представляет собой массив строк и является комплексным свойством. Нумерация элементов массива начинается с нуля. Значение этого свойства может быть сформировано в Инспекторе объектов с помощью редактора списка, который вызывается щелчком мыши по значку в поле значения свойства Items: Свойство Columns позволяет размещать кнопки в несколько колонок, если их много. Для определения выбранной кнопки во время выполнения программы используется свойство ItemIndex. По умолчанию его значение равно -1, что означает, что ни одна из кнопок не выбрана. Значение этого свойства можно задавать и до выполнения программы в Инспекторе объектов. Программным путем его значение может быть сформировано с помощью следующего оператора: RadioGroup1.Itemindex:=2; Тем самым мы “включим» третий переключатель. Для проверки состояния переключателей группы (включен или выключен) на этапе выполнения приложения можно использовать оператор вида: If RadioGroup1.Itemindex>=0 Then Case RadioGroup1.Itemindex of 0: . . .; 1: . . .; 2: . . .; end; Пример использования переключателей.
Результат работы приложения будет выглядеть на экране следующим образом:
|
| Оглавление| |