Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 115

Снова запустите программу. Кнопка будет работать так, как ей положено. Итак, мы ухитрились использовать свойства, методы и события в одном при­мере.

Как вы заметили, функция ButtonClick() принимает указатель с именем Sender на объект TObject. Каждая функция-обработчик события будет иметь по крайней мере один аргумент Sender. В зависимости от события, функция может также принимать один или несколько дополнительных аргументов. Например, обработчик события OnMouseDown выглядит сле­дующим образом:

В данном случае вы получите информацию о том, какая кнопка мыши была нажата, какая при этом была нажата клавиша на клавиатуре и ко­ординаты (х,у) курсора во время нажатия кнопки мыши. Функция-обра­ботчик содержит всю информацию, которая необходима для реакции на событие.

Что же представляет собой Sender? Это указатель на компонент, который посылает сообщение обработчику. В нашем примере аргумент Sender является излишним, поскольку мы знаем, что сообщение исходит от кнопки Show/Hide. Вообще, Sender позволяет иметь один обработчик событий для нескольких компонентов. Для иллюстрации, давайте создадим новую кнопку и сделаем одну из кнопок кнопкой Show, а другую — кнопкой Hide.

1. Если редактор кода находится на переднем плане, нажмите F12, чтобы переключиться обратно в редактор форм.

2. Выделите кнопку Show/Hide, щелкнув на ней мышью. Измените значе­ния свойств Name и Caption на Show.

3. Добавьте к форме новую кнопку справа от кнопки Show. Если хотите, выровняйте кнопки, чтобы форма выглядела лучше.

4. Измените значение свойства Name новой кнопки на Hide. Значение свой­ства Caption также изменится на Hide после того, как вы нажмете Enter.

5. Щелкните на кнопке Show, а затем на вкладке Events инспектора объ­ектов. Обратите внимание, что для события OnClick теперь указано имя обработчика ShowClick. Замените его снова на ButtonClick. (Начальное имя обработчика устанавливается по умолчанию. Вы можете изменить его на любое другое.)

Web-дизайн (с) 2010 All rights reserved