Обработка событий
Обо всех происходящих в системе событиях, таких, как создание формы, нажатие кнопки мыши или клавиатуры и т.д., ядро Windows информирует окна путем посылки соответствующих сообщений. Среда Builder позволяет принимать и обрабатывать большинство таких сообщений. Каждая компонента содержит обработчики сообщений на странице Events инспектора объектов. Для создания обработчика события необходимо выделить нужную компоненту, далее на странице Events выбрать обработчик и двойным щелчком кнопкой мыши в белом (пустом) окошке в текст программы будет вставлена соответствующая функция. Например, выделив компоненту Form 1 и выбрав обработчик OnActivate, будет вставлена функция … FormActivate (…) { }. Каждая компонента имеет свой набор обработчиков событий, однако некоторые из них присущи большинству компонент. Рассмотрим наиболее часто применяемые события: OnActivate –форма получает это событие при активации; OnCreate – возникает при создании формы (Form), в обработчике события задаются действия, которые должны происходить в момент создания формы; OnKeyPress – возникает при нажатии клавиши клавиатуры, параметр Key типа WORD содержит ASCII -код нажатой клавиши (Enter имеет код 13, Esc – 27) и обычно используется, когда необходима реакция на нажатие одной из клавиш; OnKeyDown – возникает при нажатии клавиши клавиатуры, обработчик этого события получает информацию о нажатой клавише и состоянии клавиш Shift, Alt и Ctlr, а также о нажатой кнопке мыши; OnKeyUp – является парным событием для OnKeyDown и возникает при отпускании ранее нажатой клавиши; OnClick – возникает при нажатии кнопки мыши в области компоненты, а OnDblClick – при двойном щелчке кнопкой мыши в области компоненты.
Пример выполнения задания Написать программу подсчета числа слов в строке, содержащей пробелы. Создание оконного приложения Для ввода строк и работы с ними использовать компоненту ComboBox. Ввод строки заканчивать нажатием клавиши Enter, для выхода использовать кнопку «Close». Панель диалога с результатами программы может иметь вид, представленный на рис. 7.1. В тексте программы приведем только функции-обработчики: //--------------------------------------------------------------------------- void __fastcall TForm1:: FormActivate (TObject *Sender) { Form1->ComboBox1->SetFocus(); // Передача фокуса ComboBox 1 } //--------------------------------------------------------------------------- void __fastcall TForm1:: ComboBox1KeyDown (TObject *Sender, WORD &Key,TShiftState Shift) { if (Key == 13) { ComboBox1->Items->Add(ComboBox1->Text); // Строка из окна редактирования заносится в ComboBox 1 ComboBox1->Text=""; // Очистка окна } } //------------ Обработка нажатия кнопки мыши -------------------- void __fastcall TForm1:: ComboBox1Click (TObject *Sender) { int n, i, nst; nst = ComboBox1->ItemIndex; // Определение номера строки String st = ComboBox1->Items->Strings[nst]; // Запись выбранной строки st if (st[1]!= ' ') n = 1; // Здесь и ниже ' ' – пробел else n = 0; for(i=1; i<st.Length(); i++) // Просмотр символов строки st if(st[i] == ' ' && st[i+1]!= ' ') n++; Edit1->Text = IntToStr(n); // Вывод числа слов в Edit 1 } Рис. 7.1
|