![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Работа с мышью
Создадим программу на определение точности руки и глаза: При нажатии кнопки возникает в случайном месте экрана и тут же исчезает маленькая окружность. Вы должны поточнее щелкнуть мышкой там, где она была. После щелчка компьютер сообщает вам, на каком расстоянии от центра окружности было острие мышиного курсора во время щелчка. Для создания программы нам необходимо поближе познакомиться с событиями, возникающими при работе с мышью. Заглянем в " универсальный справочник" - Object Browser. Поскольку щелкать мышью мы будем над формой, то в левой части Object Browser выберем объект Form. В правой части отыщем события, связанные с мышью. Нас пока интересует пять событий: Click (щелчок), DblClick (двойной щелчок), MouseDown (нажали клавишу мыши), MouseUp (отпустили клавишу мыши), MouseMove (сдвинули мышь). События Click и DblClick нам не подойдут, так как они ничего не говорят о координатах мыши во время щелчка. А вот MouseDown подойдет, так как координаты сообщает. А при щелчке события MouseDown и MouseUp обязательно наступают, так как любой щелчок это не что иное, как нажатие и отпускание. События MouseDown и MouseUp Зайдем в окно кода и выберем для объекта Form событие MouseDown (как это делать, я вас учил в 3.6). В окне кода появится следующая заготовка: Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub 4 параметра в скобках - это 4 вещи, которые компьютер сообщает процедуре в момент события: · Button - какая из трех кнопок мыши была нажата · Shift - были ли при этом в нажатом состоянии служебные клавиши на клавиатуре и какие именно · X, Y - координаты острия курсора мыши во время нажатия Для того, чтобы понять и проверить смысл этих параметров, прочтите (чтобы понять) и запустите (чтобы проверить) такую программу: Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Определяем, какая клавиша мыши нажата: Select Case Button Case 1: Debug.Print " Нажата левая клавиша" Case 2: Debug.Print " Нажата правая клавиша" Case 4: Debug.Print " Нажата средняя клавиша" End Select
'Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt) были при этом в нажатом состоянии: Select Case Shift Case 0: Debug.Print " Не нажата ни одна клавиша Shift, Ctrl, Alt" Case 1: Debug.Print " Нажата клавиша Shift" Case 2: Debug.Print " Нажата клавиша Ctrl" Case 3: Debug.Print " Нажаты клавиши Shift, Ctrl" Case 4: Debug.Print " Нажата клавиша Alt" Case 5: Debug.Print " Нажаты клавиши Shift, Alt" Case 6: Debug.Print " Нажаты клавиши Ctrl, Alt" Case 7: Debug.Print " Нажаты клавиши Shift, Ctrl, Alt" End Select
'Определяем координаты острия курсора мыши во время нажатия: Debug.Print " X="; X, " Y="; Y
End Sub В численном значении Shift есть система. Посмотрите в процедуре, чему " равны" клавиши Shift, Ctrl, Alt по одиночке. 1, 2 и 4. Так вот, их совместное нажатие " равно" их сумме. Убедитесь.[†] Поместите на форму несколько разных объектов. Обратите внимание, что при щелчке по ним процедура не срабатывает. Это естественно, у каждого объекта есть свое событие MouseDown.
Событие MouseUp работает аналогично. Пример программы Вот программа для поставленной выше задачи на точность руки и глаза: Dim X_кружка As Integer Dim Y_кружка As Integer Dim Расстояние_до_кружка As Double
Private Sub Form_Load() Randomize End Sub
'Процедура для создания мелькнувшего кружка: Private Sub Command1_Click() X_кружка = 4000 * Rnd 'Определяем координаты кружка (центра кружка) Y_кружка = 4000 * Rnd ForeColor = vbBlack 'Чертим кружок черным цветом Circle (X_кружка, Y_кружка), 50 For i = 1 To 3000000: Next 'Пауза, чтобы мы успели заметить кружок ForeColor = BackColor 'Стираем кружок цветом фона Circle (X_кружка, Y_кружка), 50 End Sub
'Процедура для определения расстояния от щелчка до кружка: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Расстояние_до_кружка = Sqr((X - X_кружка) ^ 2 + (Y - Y_кружка) ^ 2) MsgBox (" Промах на " & Int(Расстояние_до_кружка) & " твип.") Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе End Sub Пояснение того, как вычислялось расстояние (для тех, кто знает теорему Пифагора): Мысленно соедините отрезком прямой центр окружности и точку щелчка. Это будет гиппотенуза прямоугольного треугольника, катеты которого проведите вертикальной и горизонтальной линией. Нетрудно заметить, что горизонтальный катет равен X - X_кружка, а вертикальный равен Y - Y_кружка (знак я не учитываю). Гиппотенуза же равна нужному нам расстоянию. Теорема Пифагора гласит, что квадрат гиппотенузы равен сумме квадратов катетов. Отсюда, гиппотенуза равна корню квадратному из суммы квадратов катетов (каковая формула и записана в программе). Событие MouseMove Это событие возникает, как только мы сдвигаем мышку с места, а во время движения мыши оно возникает постоянно и многократно. Оно похоже на событие MouseDown, но есть и отличия. Запустите и проверьте эту поясняющую программу: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Определяем, какие клавиши мыши удерживаются нажатыми во время движения: Select Case Button Case 0: Debug.Print " Не нажата ни одна клавиша мыши" Case 1: Debug.Print " Нажата левая клавиша" Case 2: Debug.Print " Нажата правая клавиша" Case 3: Debug.Print " Нажаты левая, правая клавиши" Case 4: Debug.Print " Нажата средняя клавиша" Case 5: Debug.Print " Нажаты левая, средняя клавиши" Case 6: Debug.Print " Нажаты правая, средняя клавиши" Case 7: Debug.Print " Нажаты левая, правая, средняя клавиши" End Select
'Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt) удерживаются нажатыми во время движения: Select Case Shift Case 0: Debug.Print " Не нажата ни одна клавиша Shift, Ctrl, Alt" Case 1: Debug.Print " Нажата клавиша Shift" Case 2: Debug.Print " Нажата клавиша Ctrl" Case 3: Debug.Print " Нажаты клавиши Shift, Ctrl" Case 4: Debug.Print " Нажата клавиша Alt" Case 5: Debug.Print " Нажаты клавиши Shift, Alt" Case 6: Debug.Print " Нажаты клавиши Ctrl, Alt" Case 7: Debug.Print " Нажаты клавиши Shift, Ctrl, Alt" End Select
'Определяем, координаты острия курсора мыши во время движения: Debug.Print " X="; X, " Y="; Y End Sub Если событие MouseDown сообщает о нажатии какой-то одной клавиши мыши, то MouseMove сообщает о любой комбинации мышиных клавиш. Если событие MouseDown сообщает о событии нажатия какой-то клавиши, то MouseMove сообщает о состоянии мышиных клавиш (удерживаются нажатыми или нет). Мышь рисует Вот программа, превращающая мышку в карандаш: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) PSet (X, Y) End Sub Запустите ее и медленно ведите мышкой по форме. За мышкой остается нарисованный след. Задание 110: Сделайте так, чтобы мышь рисовала только при нажатой левой клавише, что более привычно для всех, кто работал в графических редакторах. Задание 111: Сделайте так, чтобы при щелчке по правой клавише толщина линии возрастала на 1.
|