Події Delphi
Операційна система Windows - багатозадачна, тобто кілька програм в ній можуть функціонувати одночасно. Коли, наприклад, ми клацаємо по кнопці у вікні нашої програми, система Windows визначає, що відбулася подія саме в нашій програмі, і посилає їй повідомлення про це. Наша програма повинна відповідним чином відреагувати на нього. Для цього ми, як програмісти, повинні написати код-обробник цієї події. Таким чином, структура програми для Windows являє собою набір підпрограм, кожна з яких відповідальна за обробку конкретного події і викликається тільки при його виникненні. Зручність Delphiполягає в тому, що ми позбавлені необхідності отримувати повідомлення від Windows самі, Delphi це робить за нас. Кожен компонент має вражаючий набір подій, на які він може реагувати. Програміст сам визначає, які події в програмі потрібно обробляти.
Відкрийте наш проект з попереднього уроку. Клацніть на компоненті Edit1 .Він "з'явиться" в інспектор об'єктів. Подивіться: у Інспектора об'єктів дві вкладки: Properties (властивості) і Events (події). Перейдіть на вкладку Events. Щоб створити обробник потрібного події, потрібно двічі клацнути по ньому мишкою. А якщо розкрити список, що випадає, в ньому будуть перебувати вже готові обробники, які можуть підходити для цього компонента. Таким чином, один обробник може викликатися для обробки подій декількох компонентів. |
Змінимо нашу програму так, щоб текст на формі з'являвся прямо в момент його введення. У момент введення у Edit1 змінюється властивість Text - в ньому з'являється нова буква! Значить, скористаємося подією onChange (change - зміна (англ.)), Яке і відбувається в цей момент. Отже:
- Кількома двічі по onChange , і опиняємося усередині щойно створеного обробника.
- Надаємо властивості Caption компонента Label1 значення властивості Text компонента Edit1 , тобто робимо те ж, що і в минулому уроці:
Label1.Caption := Edit1.Text;
Або просто копіюємо з обробника натискання кнопки. - Запускаємо програму, все працює. Як бачимо, все дуже просто.
Тепер розглянемо подія onClick . Як ви здогадуєтеся, це подія виникає при натисканні мишкою на компоненті. Скористаємося ним, щоб очищати рядок введення від уже введених символів. Ви самі вже повинні збагнути, що зробити. У обробнику потрібно привласнити властивості Text значення порожнього рядка. Рядок в Delphi утворюється висновком тексту в одинарні лапки (знаходяться на кнопці Е ): ' Так в Delphi утворюється рядок ' Значить, порожній рядок - це лапки без тексту: '' . Не повинно бути навіть пробілу, інакше він виявиться в рядку введення: Є інший спосіб, скористатися спеціально призначеним для цього методом компонента Edit, який так і називається Clear (очищення англ.): Але подумайте про користувача, який буде працювати з вашою програмою. Йому повинно бути зручно. Якщо при введенні тексту він захоче щось виправити, і клацне мишкою в тому місці тексту, де потрібно внести зміну ?! І все зітреться! Тому краще використовувати подію onEnter , яке відбувається, коли ви "входите" в нього і компонент отримує фокус введення, або використовувати для очищення спеціальну кнопку і її подіяonClick . Звичайно, у кожного компонента свій набір подій. Ми познайомилися з трьома з них:
Edit1.Text:='';
Edit1.Clear;
Інші важливі події, які є майже у кожного візуального компонента:
- onExit - виникає, коли компонент втрачає фокус введення;
- onDblClick - виникає при подвійному натисканні мишкою по компоненту;
- onKeyDown - коли при натисканні на кнопку на клавіатурі вона виявилася в нижньому положенні;
- onKeyUp - коли при відпуску клавіатурній кнопки вона виявилася в верхньому положенні;
- onKeyPress - виникає при натисканні на клавіатурну кнопку. Від подій onKeyDown іonKeyUp воно відрізняється типом використовуваного параметра Key ;
- onMouseDown - коли при натисканні кнопки мишки вона виявилася в нижньому положенні;
- onMouseUp - коли при відпуску кнопки мишки вона виявилася в верхньому положенні;
- onMouseMove - виникає при переміщенні покажчика мишки над компонентом.
На початку роботи будь-якої програми відбувається дуже важлива подія подія нашого основного компонента - Форми, onCreate . Воно відбувається перед появою Форми на екрані.Ця подія використовується для завдання властивостей тих елементів програми, які потребують в налаштуванні, наприклад, розміри і положення Форми на екрані. Якщо ви захочете зробити невидиму програму, можна прирівняти нулю ширину Width і висоту Height Форми. На етапі проектування зробити цього не можна, тому що це завадить роботі, тому робимо це за подієюonCreate:
Form1.Width := 0;
Form1.Height := 0;
Додатково потрібно прибрати і заголовок Форми, вибравши в інспектор об'єктів параметр BorderStyle рівним None. Тепер Форма на екрані не з'явиться. Єдиним візуальним ознакою залишиться поява її "значка" на панелі завдань. Надалі я розповім, як позбутися і від нього.