Сначала рассмотрим общие для кнопок свойства.
Основным из них является свойство Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи. Перед этим символом ставится ‘&’, который не появляется в надписи, а следующий символ оказывается подчеркнутым. Тогда вместо щелчка на кнопке можно нажать клавишу Alt совместно с клавишей выделенного символа.
Общее для кнопок событие − OnClick, возникающее при щелчке на ней. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке. Обработчик пишется тогда, когда данная кнопка не связана свойством Action с каким-то действием.
При установленном в true свойстве Cancel нажатие клавиши Esc будет эквивалентно щелчку на данной кнопке. Это свойство целесообразно задавать равным true для кнопок Отменить в различных диалоговых окнах, чтобы можно было выйти из диалога, нажав на эту кнопку или нажав на клавишу Esc.
При установленном в true свойстве Default нажатие клавиши Enter будет эквивалентно нажатию на данную кнопку, даже если в этот момент находится в фокусе какой-то оконный компонент. Если же в фокусе находится другая кнопка, то она и сработает.
В обычных приложениях свойство ModalResult, которое используется в модальных формах, устанавливается в mrNone.
Выполнение общего для кнопок метода Click эквивалентно щелчку на кнопке, т.е. вызывает событие OnClick. Этим можно воспользоваться, чтобы продублировать какими-то другими действиями щелчок на кнопке.
Пусть, например, нужно, чтобы при нажатии клавиши с символом ‘C’ или ‘c’ в любой момент работы с приложением выполнялись операции, предусмотренные в обработчике события OnClick кнопки Button1. Поскольку неизвестно, какой компонент будет находиться в фокусе в момент этого события, надо перехватить его на уровне формы. Такой перехват осуществляется, если установить свойство формы KeyPreview в true. Тогда в обработчике события формы OnKeyPress можно написать оператор
if((Key==’C’)||(Key==’c’))Button1->Click();
Если пользователь ввел символ ‘C’ или ‘c’, то будет выполнен обработчик щелчка кнопки Button1.
Задание 2. Изучить управляющие кнопки.
1. Начните новый проект. Перенесите на форму две панели Panel, зачистите у них свойство Caption. На каждую панель поместите по метке Label, надписи в которых замените на Button и BitBtn соответственно. На первую панель под меткой поместите кнопку Button с надписью В ыполнить, а на вторую панель под меткой − две кнопки BitBtn с надписью О ткрыть.
2. Перейдем к рассмотрению особенностей кнопки с пиктограммой BitBtn. Изображение на этой кнопке задается свойством Glyph. Выделите кнопку BitBtn. При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается окно Редактор картинки. Нажав в нем кнопку Загрузить, переходят в окно открытия файла рисунка Загрузить картинку и выбирают файл битовой матрицы .bmp, содержащей желаемое изображение. Большое количество изображений для кнопок расположено в папке …Program Files\Common Files\Borland Shared\Images\Buttons. Выбрав файл bookopen, нажмите кнопку Открыть, а в окне Редактор картинки нажмите кнопку OK. Выбранное изображение появится на кнопке BitBtn левее надписи. Проделайте то же для другой кнопки BitBtn.
Файл изображения для кнопки может содержать до четырех изображений пиктограмм размера 16×16. Самое левое соответствует отжатой кнопке. Второе слева соответствует недоступной кнопке, когда ее свойство Enabled равно true. Третье слева изображение используется при нажатии пользователя на кнопку при ее включении. Четвертое слева изображение используется в кнопках с фиксацией SpeedButton, для изображения кнопки в нажатом состоянии. Большинство изображений для кнопок использует две пиктограммы. Число пиктограмм можно узнать из свойства кнопки NumGlyphs, которое после загрузки изображения покажет число пиктограмм в нем.
Расположение изображения и надписи на кнопке определяются свойствами Margin, Layout и Spacing. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения по отношению к надписи определяется свойством Layout, которое может принимать значения: blGlyphLeft (слева, по умолчанию, для первой кнопки), blGlyphRight (справа), blGlyphTop (вверху), blGlyphBottom (внизу, задайте для второй кнопки). Если же Margin > 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселов, заданное значением Margin. Убедитесь в этом.
Свойство Spacing задает число пикселов, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки.
Еще одно свойство BitBtn − свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom − заказная. Но можно установить и множество других предопределенных типов: bkOk, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих типах уже сделаны соответствующие надписи, введены пиктограммы, заданы еще некоторые свойства. Однако рекомендуется использовать заказной тип.