тільки корисні матеріали
Головний акціонер Alibaba став найбагатшою людиною в Китаї
статті
Microsoft почала закрите тестування Office 16
статті
Фахівці знайшли діри в безпеці Windows 8.1
статті
У московському метро з'явиться єдина мобільна мережа
статті
eBay буде приймати Bitcoin
статті
Vivitek представила «шкільний» проектор D755WTIR
статті
У Твіттері з'явилася кнопка «Купити»
статті
«Яндекс.Новини» тепер можна переглядати і на iPhone
статті
В даному уроці ми розглянемо основні події за які відповідає миша і навчимося виконувати певні дії при виникненні цих подій. Відразу хочу сказати що урок розрахований на аудиторію яка тільки почала вивчати Delphi, тому попрошу гуру програміст не кидати в мене тухлими яйцями і недогризками від яблук)))
Існують три основних обробника подій: OnMouseDown
OnMouseMove
OnMouseUp
Подія MouseDown - спрацьовує тоді, коли користувач натискає кнопку мишки.
Подія OnMouseUp - спрацьовує тоді, коли користувач відпускає цю кнопку мишки
Подія OnMouseMove - виникає в той момент коли курсор мишки починає переміщатися.
Думаю поки вам все повинно бути зрозуміло!
Давайте зараз відкриємо Delphi і створимо новий проект. Після того як з'явилася нова форма, в Object inspector'е переходимо на закладку Events (події) і знаходимо там обробник подій onMouseDown, клікаєм по ньому два рази. В результаті чого Delphi створить відповідну процедуру:
procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Як ви напевно вже помітили процедура має кілька параметрів, давайте розглянемо деякі з них більш детально
Button: TMouseButton; - говорить про те що ми можемо визначати яка кнопка мишки (ліва, права) була натиснута.
TMouseButton може приймати значення вже заздалегідь визначених констант.
mbLeft - ліва кнопка миші
mbRight - права кнопка миші
mbMiddle - середня кнопка миші.
Shift: TShiftState; - за допомогою даного параметра ми можемо Об'єднати дію користувача з подією клавіатури, про це мова піде трохи нижче.
Ну і нарешті в змінних X і Y зберігаються координати курсору мишки.
Давайте зараз в уже створеному раніше обработчике подій OnMouseDown пропишемо наступний код:
Запускаємо проект, натискаємо по формі. В результаті під час кожного кліка, на формі малюється квадрат. Відмінно!
Рухаємося далі, зараз трохи ускладнити код і зробимо так що б при кліці лівою кнопкою мишки у нас малювався червоне коло, а при натисканні правою синій квадрат.
case Button of
mbLeft:
begin
Canvas.Brush.Color: = clRed;
Canvas.Ellipse (x-20, y-20, x + 20, y + 20);
end;
mbRight:
begin
Canvas.Brush.Color: = clBlue;
Canvas.Rectangle (x-20, y-20, x + 20, y + 20);
end;
end;
Можете запустити проект і перевірити результат.
Так з подією OnMouseUp і OnMouseDown ніби розібралися, переходимо до події OnMouseMove. Як я вже говорив вище подія відбувається коли користувач переміщує курсор миші над тим чи іншим елементом управління.
Давайте зараз створимо обробник подій OnMouseMove і зробимо так що б якщо користувач затиснув клавішу Shift на клавіатурі і при цьому поворушив мишею у нас вималюється кург, а якщо була затиснута клавіша Ctrl і вироблено рух мишки буде малюватися прямокутник.
Повний код процедури має такий вигляд:
procedure TForm1.FormMouseMove (Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if ssShift in Shift then
Canvas.Ellipse (x-20, y-20, x + 20, y + 20)
else if ssCtrl in Shift then
Canvas.Rectangle (x-20, y-20, x + 20, y + 20);
end;
На цьому у мене все зустрічаємося в наступному уроці.!