Delphi коды. Delphi - Делфи коды. Клавиши редактирования в Delphi

Начиная с самого рассвета компьютерной промышленности, клавиатура была первичным устройством ввода информации, и вероятнее всего сохранит свою позицию ещё долгое время.
События клавиатуры, наряду с событиями мыши, являются основными элементами взаимодействия пользователя с программой. В данной статье пойдёт речь о трёх событиях, которые позволяют отлавливать нажатия клавиш в приложении Delphi: OnKeyDown , OnKeyUp и OnKeyPress .

Коды виртуальных клавиш идентифицируют различные виртуальные ключи. Виртуальные ключи в основном состоят из фактических клавиш клавиатуры, но также включают в себя «виртуальные» элементы, такие как три кнопки мыши. Как перевести код виртуального ключа в символ.

Перехват ввода клавиатуры для элементов управления, которые не могут получить фокус ввода. Поэтому почему бы не использовать их для навигации между полями. Коды перечислены в цифровом порядке. Однако, за кулисами, это совершенно новый инструмент. Параметры редактора, используемые для каждого файла, зависят от расширения открытого файла. Эти параметры можно настроить на новой странице «Параметры источника» в диалоговом окне «Свойства редактора», отображаемой на рисунке. Еще одна особенность редактора, шаблоны кода, теперь зависит от языка.

Для получения ввода с клавиатуры, приложения Delphi могут использовать два метода. Самый простой способ, это воспользоваться одним из компонентов, автоматически реагирущем на нажатия клавиш, таким как Edit. Второй способ заключается в создании процедур в форме, которые будут обрабатывать нажатия и отпускания клавиш. Эти обработчики могут обрабатывать как нажатия одиночных клавиш, так и комбинаций. Итак, вот эти события:
OnKeyDown - вызывается, когда на клавиатуре нажимается любая клавиша. OnKeyUp - вызывается, когда любая клавиша на клавиатуре отпускается. OnKeyPress - вызывается, когда нажимается клавиша, отвечающая за определённый ASCII символ.

В контекстном меню редактора также есть команда «Страницы», в которой перечислены все доступные страницы в подменю. Вы также можете открыть несколько окон редактора, каждый из которых содержит несколько вкладок. Это единственный способ увидеть исходный код двух блоков рядом друг с другом.

Комбинации клавиш в Delphi - горячие клавиши в среде программирования Delphi

Несколько параметров влияют на редактор, как вы можете видеть в диалоговом окне «Свойства редактора» на рисунке. Однако вам нужно перейти на страницу «Настройки» диалогового окна «Параметры среды», чтобы установить функцию автосохранения редактора. Этот параметр заставляет редактор сохранять все файлы исходного кода при каждом запуске программы, предотвращая потерю данных в случае плохой сбой программы в отладчике.

Теперь самое время посмотреть, как выглядят в программе заголовки обработчиков:

procedure TForm1.FormKeyDown (Sender: TObject; var procedure TForm1.FormKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState); ... procedure var Key: Char);

Все события имеют один общий параметр, обычно называемый Key . Этот параметр используется для передачи кода нажатой клавиши. Параметр Shift (в процедурах OnKeyDown и OnKeyUp), указывает на то, была ли нажата клавиша в сочетании с Shift , Alt , и Ctrl .

Обратите внимание, что страница справки, описывающая сочетания клавиш, доступна в целом, только если вы посмотрите на элемент индекса ярлыков. Вся информация обновляется сразу же после ввода текста в редакторе. Вы также можете изменять имена переменных, свойств и методов непосредственно в проводнике кода. У вас есть полный контроль над макетом информации. И вы можете уменьшить глубину дерева, обычно отображаемого в это окно, настроив Проводник кода.

Вы можете настроить проводник кода, используя соответствующую страницу параметров среды, как показано на рисунке. Рисунок 5: Вы можете настроить проводник кода в диалоговом окне «Параметры среды». Поскольку каждый элемент дерева проводника кода имеет значок, обозначающий его тип, размещение по полю и методу кажется менее важным, чем организация с помощью спецификатора доступа. Вы можете использовать «Навигация по модулю», чтобы перейти от определения метода или процедуры к ее полному определению.

Фокус
Фокус, это способность получать пользовательский ввод через мышь или клавиатуру. Получать события от клавиатуры могут только те объекты, которые имеют фокус. На форме активного приложения в один момент времени может быть активным (иметь фокус) только один компонент.

Некоторые компоненты, такие как TImage, TPaintBox, TPanel и TLabel не могут получать фокус, другими словами, это компоненты, наследованные от TGraphicControl. Так же не могут получать фокус невидимые компоненты, такие как TTimer.

Переместите указатель мыши над символом в редакторе, а всплывающая подсказка покажет вам, где объявлен идентификатор. Эта функция может быть особенно важна для отслеживания идентификаторов, классов и функций в приложении, которое вы пишете, а также для ссылки на исходный код библиотеки. Однако реальный бонус этой функции заключается в том, что вы можете превратить ее в навигационную помощь, называемую просмотром кода. Эти ссылки отображаются с синим цветом и подчеркиванием, которые типичны для ссылок в веб-браузерах, и указатель меняется на руку, когда он расположен на ссылке.

OnKeyDown, OnKeyUp
События OnKeyDown и OnKeyUp обеспечивают самый низкий уровень ответа клавиатуры. Обработчики OnKeyDown и OnKeyUp могут реагировать на все клавиши клавиатуры, включая функциональные и комбинации с клавишами Shift, Alt, и Ctrl.

События клавиатуры - не взаимоисключающие. Когда пользователь нажимает клавишу, то генерируются два события OnKeyDown и OnKeyPress, а когда отпускает, то только одно: OnKeyUp. Если пользователь нажмёт одну из клавиш, которую OnKeyPress не сможет определить, то будет сгенерировано только одно событие OnKeyDown, а при отпускании OnKeyUp.

Эта функция генерации кода применяется к общим методам, методам обработки сообщений и свойствам. Например, если вы введете следующий код в объявлении класса. Самым важным и полезным примером завершения класса является автоматическая генерация кода для поддержки свойств, объявленных в классах. Например, если вы вводите класс.

Вы найдете больше в свойствах в следующей главе. В совокупности методы анализа кода основаны на постоянном анализе фона как исходного кода, который вы пишете, так и исходного кода системных единиц, на которые ссылается исходный код. Проникновение кода состоит из пяти возможностей: завершение кода, шаблоны кода, параметры кода, оценка выражения всплывающей подсказки и прорисовка значков подсказки. Эта последняя функция уже была рассмотрена в разделе «Просмотр в редакторе»; остальные четыре обсуждаются в следующих подразделах.

OnKeyPress
OnKeyPress возвращает различные значения ASCII для "g" и "G,". Однако, OnKeyDown и OnKeyUp не делают различия между верхним и нижним регистром.

Параметры Key и Shift
Параметр Key можно изменять, чтобы приложение получило другой код нажатой клавиши. Таким образом можно ограничивать набор различных символов, которые пользователь может ввести с клавиатуры. Например разрешить вводить только цифры. Для этого добавьте в обработчик события OnKeyPress следующий код и установите KeyPreview в True (см. ниже).

Вы можете включать, отключать и настраивать каждую из этих функций на странице «Анализ кода» диалогового окна «Свойства редактора». По завершении кода вы можете выбрать свойство или метод объекта, просто просмотрев его в списке или набрав его начальные буквы. Кодовое завершение также позволяет вам искать правильное значение в задании присваивания. Когда вы начинаете вводить текст, список фильтрует его содержимое в соответствии с начальной частью элемента, который вы вставили. В списке завершения кода используются цвета и более подробная информация, чтобы помочь вам различать разные элементы.

if Key in ["a".."z"] + ["A".."Z"] then Key:=#0

Это выражение проверяет, содержит ли параметр Key символы нижнего регистра ("a".."z") и символы верхнего регистра ("A".."Z"). Если так, то в параметр заносится значение нуля, чтобы предотвратить ввод в компонент Edit (например).
В Windows определены специальные константы для каждой клавиши. Например, VK_RIGHT соответствует коду клавиши для правой стрелки.

Еще одна особенность заключается в том, что в случае функций с параметрами в сгенерированный код включаются скобки, а подсказка списка параметров отображается немедленно. Просто выберите один из они добавят надлежащий метод в объявление класса. В этом конкретном случае список завершения кода допускает множественный выбор. Кодовое завершение включает в себя некоторые дополнительные функции, которые легко обнаружить. Когда вы вызываете его по пустой строке, список также включает символы из общих единицы, которые еще не включены в инструкцию использования текущего устройства.

Чтобы получить состояния специальных клавиш, таких как TAB или PageUp можно воспользоваться API функцией GetKeyState . Клавиши состояния могут находиться в трёх состояниях: отпущена, нажата, и включена. Если старший бит равен 1, то клавиша нажата, иначе отпущена. Для проверки этого бита можно воспользоваться API функцией HiWord . Если младший бит равен 1, то клавиша включена. Вот пример получения сосотояния специальной клавиши:

Вы можете добавить настраиваемые шаблоны кода, чтобы вы могли создавать свои собственные ярлыки для часто используемых блоков кода. Символ вертикальной линии указывает позицию в исходном коде, где курсор будет в редакторе после расширения шаблона. Вы должны выбрать позицию, в которой вы хотите начать печатать, чтобы завершить код, сгенерированный шаблоном. Хотя шаблоны кода могут казаться, что сначала соответствуют языковым ключевым словам, они являются более общим механизмом.

Просто введите имя функции или метода и открытую скобку, а имена и типы параметров появятся сразу во всплывающем подсказке. В качестве дополнительной помощи текущий параметр отображается жирным шрифтом. Выражение выражения всплывающей подсказки - это функция отладки. Он показывает вам значение идентификатора, свойства или выражения, которое находится под курсором мыши. В случае выражения вам обычно нужно выбрать его в редакторе, а затем переместить указатель мыши над выделенным текстом.

if HiWord(GetKeyState(vk_PageUp)) <> 0 then ShowMessage("PageUp - DOWN") else ShowMessage("PageUp - UP");

В событиях OnKeyDown и OnKeyUp, Key является беззнаковым двухбайтовым (Word) значением, которое представляет виртуальную клавишу Windows. Для получания значения символа можно воспользоваться функцией Chr. В событии OnKeyPress параметр Key является значением Char, которое представляет символ ASCII.

События OnKeyDown и OnKeyUp имеют параметр Shift с типом TShiftState. В Delphi тип TShiftState определён как набор флагов, определяющих состояние Alt, Ctrl, и Shift при нажатии клавиши.

В редакторе есть еще несколько клавиш быстрого доступа, которые зависят от стиля редактора, который вы выбрали. Вот несколько из менее известных ярлыков. Полезность закладок в редакторе ограничена фактами, что новая закладка может переопределить существующую и что закладки не являются постоянными. Количество используемых пробелов устанавливается с помощью параметра «Отступ блока» на странице «Редактор» диалогового окна «Параметры редактора». Макрос записывает все операции ввода, перемещения и удаления, выполняемые в файле исходного кода. Воспроизведение макроса просто повторяет последовательность - операцию, которая может иметь мало смысла, когда вы переходите к другому файлу исходного кода. Макросы редактора весьма полезны для повторного выполнения многоступенчатых операций, таких как переформатирование исходного кода или организация данных более разборчиво в исходном коде. Диаграмма не построена автоматически.

Например, следующий код (из обработчика OnKeyUp) соединяет строку "Ctrl +" с нажатой клавишей и отображает результат в заголовке формы:

Переадресация событий клавиатуры в форму
Клавиатурный обработчик может работать на двух уровнях: на уровне компонентов и на уровне формы. Свойство формы KeyPreview определяет, будут ли клавиатурные события формы вызываться перед клавиатурными событиями компонентов, так как форма может получать все нажатия клавиш, предназначенные для компонента имеющего в данный момент фокус.

Клавиши навигации по коду в Delphi

Хорошо, что вы можете устанавливать свойства, просто рисуя стрелки между компонентами. Эта ситуация изображена на рисунке. Рисунок 6: Диаграмма показывает отношения между компонентами. Как вы можете видеть, настройка свойств направлена: если вы перетаскиваете линию отношений свойств из редактирования на метку, вы в конечном итоге пытаетесь использовать метку в качестве значения свойства поля редактирования. Поскольку это невозможно, вы увидите сообщение об ошибке, указывающее на проблему, и предложите подключить компоненты в обратном порядке.

Чтобы перехватить нажатия клавиш на уровне формы, до того как они будут переданы компонентам на форме, необходимо установить свойство KeyPreview в True. После этого компонент как и раньше будет получать события, однако сперва они будут попадать в форму, чтобы дать возможность программе разрешить или запретить ввод различных символов.

Хотя вы можете использовать представление «Диаграмма» для установления отношений, его основная роль - документировать ваш дизайн. По этой причине важно иметь возможность печатать содержимое этого представления. Вы можете настроить вывод разными способами. Рисунок 7: Параметры печати для диаграммы.

Все эти файлы, очевидно, бесполезны во время выполнения. Сегодняшний первый совет, который мы покажем, представляет собой довольно простой и довольно интересный эффект с иконкой приложения. Конечно, каждое приложение обычно имеет масштабированную иконку в своем главном окне на панели субтитров рядом с названием окна. Один и тот же значок можно увидеть и на главной панели. В довольно простой форме мы можем изменить значок, и мы можем легко создать небольшую анимацию, используя соответствующие значки.

Допустим, У Вас на форме есть несколько компонентов Edit и процедура Form.OnKeyPress выглядит следующим образом:

procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char); begin if Key in ["0".."9"] then Key:= #0 end ;

Если один из компонентов Edit имеет фокус и свойство KeyPreview установлено в False, то этот код не будет выполнен - другими словами, если пользователь нажмёт клавишу "5", то в компоненте Edit, имеющем фокус, появится символ "5".

Сначала мы сначала сохраним используемые значки. Вы можете использовать практически любой компонент, который может удерживать изображение. После этого просто убедитесь, что значок изменяется регулярно, например, мы можем использовать таймер. Мы покажем вам простое решение для замены двух значков. Теперь вам просто нужно установить соответствующий интервал таймера и сделать небольшую анимацию. Очень простой наконечник, поэтому без каких-либо больших интродукций. Практическое использование может быть не столь распространенным, однако эта функция иногда может быть полезна.

Однако, если KeyPreview установлено в True, то событие формы OnKeyPress будет выполнено до того, как компонент Edit увидит нажатую клавишу. Поэтому, если пользователь нажмёт клавишу "5", то в Key будет подставлено нулевое значение, предотвращая тем самым попадание числовых символов в Edit.

ПРИЛОЖЕНИЕ: Таблица кодов виртуальных клавиш.

Symbolic
constant name
Value
(hexadecimal)
Keyboard (or mouse) equivalent
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_ESCAPE 1B ESC key
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_PRINT 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
VK_LSHIFT A0 Left SHIFT key
VK_RSHIFT A1 Right SHIFT key
VK_LCONTROL A2 Left CONTROL key
VK_RCONTROL A3 Right CONTROL key
VK_LMENU A4 Left MENU key
VK_RMENU A5 Right MENU key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key

Не секрет, что современный язык программирования Делфи был основан на более распространённом Pascal и некоторое время не имел самостоятельности. Тем не менее, сейчас Delphi является полноценным развивающимся языком программирования, тогда как ранее он был всего лишь производной Pascal, созданным для обозначения диалекта этого языка.

Под этим, возможно, с совершенно понятным заголовком, нечего делать, чем программируемое перемещение мыши в рабочей области с возможностью «щелчка» правой или левой кнопкой. В простом примере мы покажем вам активацию кнопки «Пуск». Поэтому он обнаруживается с использованием экрана.

Увеличьте размер изображения и снова вычитайте около 20 пикселей, чтобы получить кнопку «Пуск». Затем мы можем «щелкнуть» левую кнопку. Конечно, этот пример будет работать только в том случае, если у вас есть кнопка «Домой» с кнопкой «Пуск» в «классической» позиции в нижней части экрана, возможно, мне не нужно напоминать вам. Как только мы немного коснулись основной панели, мы покажем вам, как можно отключить часы. Простой параметр определяет, показывать ли часы.

Delphi, оснащённый собственной средой программирования, имеет все необходимые условия и отличительные черты самостоятельного языка, в том числе и персональные исходные коды. К слову, Delphi коды размещены и публично доступны на странице разработчиков, сопровождаемые необходимыми комментариями относительно возможности изменения исходных кодов и создания собственных приложений при помощи Delphi.

Отображение дополнительных окон на панели задач. Вы можете обнаружить, что это неприятно, когда вторичные окна вашего приложения сводятся к нижнему левому углу рабочего стола. Мало того, что это не выглядит красиво, но возобновление окна немного неудобно.

Клавиши общей навигациив Delphi

Вы можете использовать следующую функцию для определения частоты процессора. Результат не будет абсолютно точным, но если вы сделаете в среднем несколько результатов, вы окажетесь достаточно близко к реальности. Например, вы можете красть своих младших братьев и сестер или детей с помощью небольшого приложения, которое будет постоянно напоминать им, как долго они уже сидят на этом компьютере. В следующий раз мы рассмотрим сочетания клавиш, узнаем, как запустить приложение в полноэкранном режиме, как убедиться, что работает только один экземпляр программы и другие детали.

Исходный код Delphi можно разделить на модули и файлы проекта. Эти элементы подчинены одинаковым соглашениям. Файлы проекта Delphi имеют расширения DPR . Такие файлы разработаны как главные исходные файлы для всех проектов. Все модули, которые могут использоваться в проекте, всегда имеют расширение PAS . Так же в проектах могут использоваться и дополнительные файлы (например, командные, html, DLL и так далее). Такие файлы зачастую очень важны, но к нашей теме имеют совсем малое отношение.

Для того, чтобы оперироваться исходными файлами, над ними, без сомнения, необходимо производить какие-то важные действия. К таким действиям можно отнести задание имени или переименование. Для языка Delphi предусмотрена большая длина имени файла, что делает работу значительно удобнее. Если в названии файла используется несколько слов, для написания первой буквы каждого слова следует использовать заглавные буквы. Такой способ именования файлов называется InfixCaps или по-другому: CamelCaps .

Чтобы организовать исходные файлы, вам потребуется знать, какие элементы могут содержаться в модулях. Список таких элементов в необходимом порядке представлен ниже:

  • Информация о правах (Copyright/ID);
  • Имя модуля (Unit Name);
  • Объявление включаемых файлов (Include files);
  • Секцию интерфейса (Interface section);
  • Дополнительные определения (Additional defines);
  • Реализацию (Implementation)
  • Объявление используемых модулей (Uses clause);
  • Закрывающий оператор и точку (A closing end and a period).

Элементы дополнительного характера можно структурировать по желанию пользователя. Однако, даже в этом случае существует необходимость соблюдения некоторых условий относительно порядка написания копирайта, имени модуля, условных директив и определений, директив компилятора и файлов включения, определения подключения. Именно в таком порядке должны располагаться перечисленные выше элементы.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: