Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП / ЛР6.doc
Скачиваний:
20
Добавлен:
25.02.2016
Размер:
103.94 Кб
Скачать

Часть 3. Создание обработчиков событий

Рассмотрим принцип работы создаваемого приложения. В строки Edit1иEdit2пользователь вводит числа и нажимает одну из кнопок арифметических операций. При этом знак операции отображается в меткеLabelZnak. При щелчке по кнопке «=» происходит подсчет и, пример отображается в строке объектаMemo. Далее приложение ожидает ввода пользователя и выводит новый пример в новой строке объектаMemo. При нажатии кнопкиОчистить, все строки из окна редактирования удаляются.

Начнем с программирования события «щелчок по кнопке арифметической операции». Действия при щелчке по каждой из таких кнопок однотипны: знак операции должен отображаться в метке LabelZnak. В таком случае можно использовать для всех четырех кнопок один обработчик события.

Такой прием нами уже рассматривался: вначале создают обработчик события для одного объекта, а затем назначают эту подпрограмму каждому из оставшихся объектов. Существует и другой способ: выделяют сразу все объекты и создают для них обработчик события. При этом подпрограмма получает имя по названию первого выделенного объекта, но относится ко всем.

  1. Создайте общий обработчик события для кнопок арифметических операций. Для этого выделите кнопки «+», «–», «*» и «/». Вокне инспектора объектовперейдите на вкладкуEvents (События)и в строкеOnClick (по щелчку)выполнитедвойной щелчок. В программной части проекта появится процедура с именемTFormCalc.ButtonPClick.

Теперь в метку LabelZnakс помощью свойстваCaptionнадо передать знак арифметической операции в соответствии с нажатой кнопкой. При этом знак операции совпадает со свойствомCaptionкнопок. Фактически в процедуре следует записать команду:LabelZnak.Caption := _______.Caption;

где вместо пропуска должно быть имя нажатой кнопки (ButtonP,ButtonM,ButtonUилиButtonD). Как помним, в процедурах системыDelphiсуществует параметрSender, с помощью которого подпрограмма может определить, какой именно компонент создал данное событие, т.е. знак какой кнопки взять. Однако, записать в командеSender.Caption НЕЛЬЗЯ, так какSender– это не сам объект, а указатель на него и поэтому свойств не имеет. В этом случае надо привестиSenderк типу объекта:

  1. Дополните тело процедуры ButtonPClickследующим образом:

Смысл записанной команды таков: с переменной Senderкак с кнопкой выполнить команду: заголовку меткиLabelZnakприсвоить заголовок того объекта, на которыйSenderуказывает (т.е. заголовок кнопки).

  1. Сохраните изменения в проекте. Запустите приложение на исполнение и убедитесь в работе кнопок арифметических операций. Закройте приложение.

  2. Создайте обработчик события «Щелчок по кнопке ButtonR». Для этого выделите кнопку со знаком «=», вокне инспектора объектовперейдите на вкладкуEvents (События)и в строкеOnClick (по щелчку)выполнитедвойной щелчок. В программной части проекта появится процедура с именемTFormCalc.ButtonRClick. Дополните подпрограмму:

В последней командеAdd(добавить) – это метод, позволяющий добавить строки (Lines) в окно редактирования (MemoR). В качестве аргументаAddуказана добавляемая строка (res). Для удаления строк объектаMemo(по щелчку кнопкиОчистить) можно использовать уже известный вам методClear.

  1. Создайте обработчик события «Щелчок по кнопке ButtonNew». Для этого выделите кнопкуОчистить, вокне инспектора объектовперейдите на вкладкуEvents (События)и в строкеOnClick (по щелчку)выполнитедвойной щелчок. В программной части проекта появится процедура с именемTFormCalc.ButtonNewClick. Допишите в тело процедуры команду:

  1. Сохраните изменения в проекте. Запустите приложение на исполнение и убедитесь в его функциональности. Закройте окно приложения.

Соседние файлы в папке ОАиП