Большинство приложений C++Builderимеют кнопки управления, простым нажатием которых пользователь может выполнять разнообразные действия. Простейшей и наиболее часто используемой кнопкой является компонент Button, который представляет собой стандартную кнопку Windows. Для отображения на кнопке текста, поясняющего ее назначение, используется свойство Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи путем установки перед ним символа амперсанта "&". Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа. При нажатии на кнопку инициируется событие кнопки – OnClick,которое отображается в редакторе кода,а в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке.
Свойство Cancel определяет порядок использования клавиши Esc.Если его установить в true, то нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку.
Свойство Default определяет порядок использования клавиши Enter,если его установить в true,то нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе.
Несколько реже используется графическая кнопка BitBtn , на поверхности которой можно располагать изображение. Изображение на кнопке задается ее свойством Glyph. При этом необходимо :
В Инспекторе Объектов нажать кнопку с многоточием на строке свойств Glyph, врезультате чего будет вызвано окно редактора пиктограммы (Picture Editor).
Нажать кнопку редактора Load и перейти в обычное окно открытия файла рисунка.
Выбрать желаемое изображение из файла с расширением .bmp.
После выбора изображения при нажатии кнопки OK рисунок появится на кнопке левее надписи.
Расположение изображения и надписи (свойство Caption) на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Marginравно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. Если же Margin > 0, то в зависимости от изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей, заданное значением Margin. При этом положение изображения по отношению к надписи определяется Свойство Layout определяет положение изображения по отношению к надписи, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight(справа), blGlyphTop (вверху), blGlyphBottom(внизу).
Свойство Spacing задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки.
Еще одно свойство BitBtn- свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom - заказная. Но можно установить и множество других типовых кнопок: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих кнопках уже сделаны соответствующие надписи, введены пиктограммы, заданы свойства ModalResult и др.
Еще одной разновидность кнопок является кнопка с фиксацией SpeedButton .Эти кнопки обычно используются в качестве быстрых кнопок , дублирующих различные команды меню. Изображение на кнопке задается свойством Glyph , точно также как и для кнопки BitBtn.У кнопок TSpeedButton, как и у других кнопок, имеется свойство Caption - надпись, но в этих кнопках оно обычно оставляется пустым, так как вместо надписи используется пиктограмма. Особенностью кнопок TSpeedButton являются свойства GroupIndex(индекс группы), AllowAllUp (разрешение отжатого состояния всех кнопок группы) и Down (исходное состояние - нажатое). Если GroupIndex = 0, то кнопка ведет себя так же, как TButton и TBitBtn. При нажатии пользователем кнопки она погружается, а при отпускании возвращается в нормальное состояние. В этом случае свойства AllowAllUp и Downне влияют на поведение кнопки.
Если GroupIndex > 0 и AllowAllUp = true, то кнопка при щелчке пользователя на ней погружается и остается в нажатом состоянии. При повторном щелчке пользователя на кнопке она освобождается и переходит в нормальное состояние (именно для того, чтобы освобождение кнопки состоялось, необходимо задать AllowAllUp = true). Если свойство Down во время проектирования установлено равным true, то исходное состояние кнопки - нажатое.Если есть несколько кнопок, имеющих одинаковое ненулевое значение GroupIndex, то они образуют группу взаимосвязанных кнопок из которых нажатой может быть только одна. Если одна кнопка находится в нажатом состоянии и пользователь щелкает на другой, то первая кнопка освобождается, а вторая фиксируется в нажатом состоянии. Поведение нажатой кнопки при щелчке на ней зависти от значения свойства AllowAllUp. Если оно равно true, то кнопка освободится, поскольку в этом случае возможно состояние, когда все кнопки группы отжаты. Если же AllowAllUp равно false, то щелчок на нажатой кнопке не приведет к изменению вида кнопки. Впрочем, и в этом случае, как и при любом щелчке на кнопке, возникает событие OnClick, которое может быть обработано.
Состояние кнопки во время выполнения можно определить по значению свойства Down: если значение равно true, то кнопка нажата. Внешний вид интерфейса приложения, иллюстрирующего некоторые свойства кнопок, показан на рисунке 5.1, а программный код приведен на рисунке 5.2. Интерфейс приложения содержит форму на которой, кроме исследуемой кнопки типа Button,размещены кнопки других типов. Правую часть формы занимает окно многострочного редактированияMemo1, которое используется для демонстрации операторов кода при выполнении программы . Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.1. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.1) и не требует дополнительных пояснений.
Таблица 5.1
Компонент
Свойство
Значение
Форма
Caption
Основные свойства кнопок
Кнопка
Name
Button1
Caption
Исследуемая кнопка
Графические кнопки
Name
BitBtn1(Close)
Name
BitBtn2(Ignore)
Name
BitBtn3(Abort)
Name
BitBtn4(Help)
Name
BitBtn5(No)
Кнопки с фиксацией
Name
SpeedButton1
Name
SpeedButton2
Радио кнопки
Caption
Изменение названия (RadioButton1)
Caption
Изменение шрифта (RadioButton2)
Caption
Кнопка невидима (RadioButton3)
Caption
Другие виды кнопок(RadioButton4)
Многостроч.окно редактирования
Name
Memo1
Другие свойства компонентов принимаются по умолчанию.
Рис.5.1.Интерфейс приложения
//Программный код, иллюстрирующий некоторые свойства кнопок
Рис.5.2 Программный код, иллюстрирующий некоторые свойства кнопок
Программный код( Рис.5.2) позволяет демонстрировать основные свойства кнопок.Запускающим ключомдля демонстрации каждого свойстваявляется событиеOnClick (включение радио кнопок),а операторы программного кода ,реализующие то или иное свойство отображаются в окне редактирования Memo1.Листинг программного кода снабжен подробными комментариями и не требует дополнительных пояснений.