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

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

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 человек ! Подписаться



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

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

ЧингачгукХрючийХвост 25 Sep 2012 в 00:00 #
А как узнать попал ли курсор в определенную область?
Ну к примеру при наведении курсора на прямоугольник выполнить то-то...
Querto 20 Sep 2012 в 00:00 #
Для перемещения курсора мыши в заданные координаты (приложение на дельфях может быть свернутым), допустим с определенной переодичностью, например, через каждые 5 секунд курсор мыши переместить в координаты 10,10;
кидаем с вкладки system => Timer, в свойствах задаем период: Interval=5000:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Mouse.CursorPos:=Point(10,10);
end;

P.S. Можно внутри Timer изменять период, выполнять различные проверки на появления определенного окна и т.д., имулировать клик мыши
Бото-хотетили млин...
Валерьян Петрович 29 Aug 2012 в 00:00 #
А как сделать так, чтоб программа эмитировала эмитацию эмитационной кнопки телефона, подсоединённого к сетевому порту с помощи изоленты и провода от караоке, да так чтоб весь отчет был отослан по факсу на притер в магазин, который эмутирует магазин о.О
ololo 19 May 2012 в 00:00 #
Охуеть как сложно. Да ты мега мастер. Просто мега быдлокодер.
spesher 19 Dec 2011 в 00:00 #
Админ.
можна попросить урок по "SocketClient и SocketServer"?
был-бы очень признателен, и не только я, но многие хотят попробывать написать свой чат по Сокету.
спасибо.

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