Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Работа с клавиатурой
Поставим задачу сделать игру, где наш миниатюрный гоночный автомобиль будет под управлением клавиш клавиатуры нестись от старта до финиша. Для этого вам нужно познакомиться с событиями, связанными с клавиатурой. Их три: KeyDown (клавиша нажата), KeyUp (клавиша отпущена) и KeyPress. (по клавише щелкнули). Нас пока интересуют только первые два. События KeyDown и KeyUp Создайте проект из одной формы, без элементов управления. Зайдите в окно кода и выберите для объекта Form событие KeyDown. В появившуюся заготовку процедуры запишите сдедующий код: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'Определяем, какая клавиша клавиатуры была нажата: Select Case KeyCode Case vbKeyUp: Debug.Print " Нажата стрелка вверх" Case vbKeyDown: Debug.Print " Нажата стрелка вниз" Case vbKeyLeft: Debug.Print " Нажата стрелка налево" Case vbKeyRight: Debug.Print " Нажата стрелка направо" Case vbKeyW: Debug.Print " Нажата клавиша W" Case vbKey7: Debug.Print " Нажата клавиша 7" Case vbKeySpace: Debug.Print " Нажата клавиша пробела" Case vbKeyDelete: Debug.Print " Нажата клавиша Delete" Case vbKeyF4: Debug.Print " Нажата клавиша F4" Case vbKeyAdd: Debug.Print " Нажата клавиша +" Case vbKeyEscape: Debug.Print " Нажата клавиша Esc" 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 End Sub Два параметра в скобках заголовка процедуры - это две вещи, которые компьютер сообщает процедуре в момент события: · KeyCode - код нажатой клавиши. На клавиатуре - сто с лишним клавиш. На каждой - по две буквы или один, два, три других символа. Компьютер различает клавиши независимо от того, какие значки на них нанесены. Так мать различает сыновей независимо от того, что написано у них на майках. У каждого сына есть имя, у каждой клавиши есть код (KeyCode). Итак, попросту говоря, компьютер сообщает процедуре, какая клавиша была нажата. Полный список кодов находится в Object Browser (класс KeyCodeConstants). · Shift - были ли при этом в нажатом состоянии клавиши клавиатуры (Shift, Ctrl, Alt) и какие именно. В численном значении Shift та же система, что и в событии MouseDown. Совместное нажатие клавиш Shift, Ctrl, Alt " равно" сумме их нажатий по-одиночке (1, 2 и 4). Запустите проект и проверьте, как работает программа. Обратите внимание, что при удержании клавиш в нажатом состоянии событие генерируется (создается компьютером) несколько раз в секунду. Положение несколько меняется, когда при нажатой Shift, Ctrl или Alt щелкается обычная клавиша. Впрочем, пока это неважно.
События, связанные с клавиатурой, имеются у многих объектов. Поместим на форму, к примеру, пару кнопок и текстовое поле. Предположим, процедуру Private Sub Form_KeyDown мы стерли, а написали три процедуры: Private Sub Command1_KeyDown… Private Sub Command2_KeyDown… Private Sub Text1_KeyDown… Запустим программу и щелкнем по какой-нибудь клавише. Какая из трех процедур сработает? Та, чей объект находится в фокусе. Для нашей игры это неудобно: если мы для программирования реакции автомобиля на нажатия клавиш выберем, например, процедуру Private Sub Command2_KeyDown, то во время гонки мы не сможем щелкать по другим кнопкам, кроме Command2, так как иначе Command2 выйдет из фокуса и автомобиль перестанет реагировать на клавиши. Не надо было стирать процедуру Private Sub Form_KeyDown, восстановим ее. Но это не помогает. По простой причине - один какой-нибудь объект на форме всегда находится в фокусе, так что до процедуры Private Sub Form_KeyDown дело никак не доходит. Против этого в Visual Basic есть специальный прием - свойство формы KeyPreview устанавливается в True. Это означает приказ компьютеру почти каждое нажатие на клавиши считать событием формы, а не другого объекта. Вдобавок к этому советую поместить в самый конец процедуры Private Sub Form_KeyDown оператор KeyCode=0. Тоже хорошо помогает (без комментариев). Что значит " почти каждое нажатие"? Есть исключения - клавиши Enter, Esc, Tab в некоторых случаях.
Событие KeyUp работает аналогично.
Задание 112 “Светофор”: Нарисуйте светофор: прямоугольник и три круга. При нажатии на клавиатуре клавиши R светофор должен загораться красным светом, G - зеленым, Y - желтым. Здесь таймер не нужен. Задание 113 “Зенитка”: Вверху справа налево медленно движется вражеский самолет. В подходящий момент вы нажатием любой клавиши запускаете снизу вверх зенитный снаряд. Здесь нужны два таймера.
|