Delphi основы работы с мышкой

Опубиковано: 24.11.2011 г., автор: , просмотров: 39783

Delphi работа с мышкой

В данном уроке мы рассмотрим основные события за которые отвечает мышь и научимся выполнять определенные действия при возникновении этих событий. Сразу хочу сказать что урок рассчитан на аудиторию которая только начала изучать 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 пропишем следующий код:

Canvas.Ellipse(x-20,y-20,x+20,y+20) ;

Запускаем проект, кликаем по форме. В итоге при каждом клике, на форме рисуется квадрат. Отлично !

Двигаемся дальше, сейчас немного усложним код и сделаем так что бы при клике левой кнопкой мышки у нас рисовался красный круг, а при клике правой синий квадрат.

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;

На этом у меня все встречаемся в следующем уроке.!

P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.Участвовать в конкурсах и постепенно вливаться в нашу команду ?! 

Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
Нас уже больше чем 10000 человек ! Подписаться



Похожие материалы

Последние из рубрики

Морковковедение 10 Янв 2017 в 16:02 #
Развожу морковь в домашних условиях. хотел бы побольше узнать об этом бизнесе если кто то разводит морковки дома. помогите, какая должна быть температура при выращивание?
Катерина 19 Ноя 2013 в 18:04 #
спасибо большое за урок!!!
lol 20 Июн 2013 в 00:00 #
А как сымитировать имитацию имитационной кнопки имитационного телефона через имитацию имитационого имитатора(Troll Face)0_0;
Новичек 23 Мар 2013 в 00:00 #
Спасибо, я только начал изучать делфи, очень помогло.
Владимир Любаев 23 Мар 2013 в 00:00 #
Добавляй сайт в закладки!. В скором времени планируется пополнение базы уроков.

ОтменитьДобавить комментарий