- •Лекція №14
- •Тема 4. Розробка графічного інтерфейсу користувача (продовження) Обробка подій миші і клавіатури План
- •2. Розпізнавання джерела події, натиснутих кнопок і клавіш, координат курсору
- •3. Події клавіатури
- •4. Перетягування даних між об’єктами
- •5. Перетягування і вбудовування об'єктів — Drag&Doc. Плаваючі вікна
- •6. Буксування компонентів у вікні програми
Лекція №14
Тема 4. Розробка графічного інтерфейсу користувача (продовження) Обробка подій миші і клавіатури План
1. Події миші.
2. Розпізнавання джерела події, натиснутих кнопок і клавіш, координат курсору.
3. Події клавіатури.
4. Перетягування даних між об’єктами.
5. Перетягування і вбудовування об'єктів — Drag&Doc. Плаваючі вікна.
6. Буксування компонентів у вікні програми.
-
Події миші
Всі дії користувача при взаємодії із програмою зводяться до переміщення, натисненню кнопок миші і натисненню клавіш клавіатури. Розглянемо обробку в застосуванні подій, пов'язаних з цими маніпуляціями користувача.
У компонентах C++Builder визначений ряд подій, пов'язаних з мишею. Це події:
OnСlick - клацання мишею на компоненті і деякі інші дії користувача.
OnDblClick - подвійне клацання миші на компоненті.
OnMouseDown - натиснення клавіші миші над компонентом. Можливо розпізнавання натиснутої кнопки і координат курсору миші.
OnMouseMove - переміщення курсору миші над компонентом. Можливо розпізнавання натиснутої кнопки і координат курсору миші.
OnMouseUp - відпускання раніше натиснутої кнопки миші над компонентом. Можливо розпізнавання натиснутої кнопки і координат курсору миші.
OnStartDrag - початок, процесу «перетягування» об'єкту. Можливо розпізнавання перетягнутого об'єкту.
OnDragOver - переміщення «перетягнутого» об'єкту над компонентом. Можливо розпізнавання перетягнутого 6об'єкту і координат курсору миші.
OnDragDrop - відпускання раніше натиснутої кнопки миші після «перетягування» об'єкту. Можливо розпізнавання перетягнутого об'єкту і координат курсору миші.
OnEndDrag - ще одна подія при відпусканні раніше натиснутої кнопки миші після «перетягування» об'єкту. Можливо розпізнавання перетягнутого об'єкту і координат курсору миші.
OnEnter – подія, що виникає у момент отримання елементом фокусу в результаті маніпуляції мишею, натиснення клавіші табуляції або програмної передачі фокусу.
OnExit - подія у момент втрати елементом фокусу в результаті маніпуляції мишею, натиснення клавіші табуляції або програмної передачі фокусу.
OnMouseWheel - подія при обертанні коліщатка миші в будь-яку сторону. Починаючи з C++Builder 5.
OnMouseWheelUp - обертання коліщатка миші вгору. Наступає, якщо обертання не оброблене по подією OnMouseWheel.
OnMouseWheelDown - обертання коліщатка миші вниз. Наступає, якщо обертання не оброблене подією OnMouseWheel.
Як видно з приведеної таблиці, ці події охоплюють всі можливі маніпуляції з мишею і навіть дублюють багато з них. Найширше використовується подія OnClick. Звичайно вона наступає, якщо користувач клацнув на компоненті, тобто натиснув і відпустив кнопку миші, коли покажчик миші знаходився на компоненті. Але ця подія відбувається також і при деяких інших діях користувача. Вона наступає, якщо:
-
Користувач вибрав елемент в таблиці, дереві, списку, випадному списку, натиснувши клавішу із стрілкою.
-
Користувач натиснув клавішу пропуску, коли кнопка або індикатор були у фокусі.
-
Користувач натиснув клавішу Enter, а активна форма має кнопку за умовчанням, вказану властивістю Default.
-
Користувач натиснув клавішу Esc, а активна форма має кнопку переривання, вказану властивістю Cancel.
-
Викликаний метод Click елементу меню..
Для форми подія OnClick наступає, якщо користувач клацнув на порожньому місці форми або на недоступному компоненті.
Подія OnMouseMove відбуваються постійно в процесі переміщення курсору миші і навіть просто при його тремтінні, неминучому, якщо користувач не знімає руки з миші. Це треба враховувати і користуватися цією подією дуже обережно, оскільки вона, на відміну від інших, відбувається багато разів. Кожна дія користувача, пов'язане з натисненням або відпусканням кнопки миші приводить до серії послідовно наступаючих подій. У обробниках подій OnMouseDown і OnMouseUp можна розпізнати, яка кнопка миші натиснута, і в якій точці компоненту знаходиться в даний момент курсор миші.