Pull to refresh

Обзор механизма естественного ввода в RAD Studio 2010

Delphi *
Translation
Original author: Wings of Wind
imageНа этой неделе мы немного обсудим нововведения в VCL, особо фокусируясь на возможностях естественного ввода (жесты и прикосновения) в RAD Studio 2010. Примите во внимание, что всё, о чём мы говорим, есть лишь бета-версия, и до релиза всё может измениться.

С помощью нового механизма вы можете выбирать разнообразные предопределённые движения вашего манипулятора (либо создавать новые, пользовательские) для того, чтобы ассоциировать их с разными действиями. Пользователям браузера Opera (и не только) это покажется знакомым. Для остальных, напомню, что Windows (а значит, и Delphi) давно содержит одно старое движение: Drag&Drop. Считайте, что этот механизм есть нечто подобное, но гораздо более мощное. Разумеется, это будет активно использоваться в программировании с использованием пера, приложениях для контент-киосков с использованием тачскрина и т.д.

Если вдаваться в детали, проясним одно положение: Delphi пытается использовать механизм обработки естественного ввода выпускающегося сейчас Windows 7. Если это невозможно (к примеру, приложение запущено на Windows XP), используется собственный механизм распознавания. Как он это делает? С помощью некоторого нововведения в языке (но это тема другого поста, конечно =)).


imageДавайте посмотрим на категорию «Gestures». (Нет, не обращайте внимания на две категории «Ribbon Controls» и «Touch» повыше.) Даже если, как уже сказано, у нас есть предопределённые жесты, мы можем создавать новые, собственные. Именно это и является основной задачей компонента TGestureManager. Он может содержать пользовательские жесты для компонентов (нечто вроде TActionManager) и может хранить эти жесты в файле.

Разумеется, чтобы управлять нашими жестами, существует Custom Gestures Editor. Вот он:
image


Как вы можете видеть, возможности Editor`a включают присваивание собственных имён каждому жесту, контроль чувствительности, индивидуальное управление каждой точкой жеста (добавление/правка/удаление), приближение и удаление, демонстрацию жеста, запись нового или тестирование жеста с помощью вашего манипулятора (обычно это мышь). Интересно заметить, что он может указывать вам, если у жеста есть сходство с другими (включая встроенные), включая процентную оценку сходства. К примеру, нарисованный мною треугольник «похож на 100%» на встроенный (в терминологии Delphi «Standard») sgiTriange. Поскольку они так похожи, я удалил свой жест и записал новый, под именем «Untitled» (я иногда такой ленивый...) в форме буквы Z.

imageТеперь давайте посмотрим, как мы можем использовать жесты. На рисунке вы можете увидеть часть нового свойства Touch: TTouchManager так, как оно отображается в Object Inspector`е. Естественно, это свойство появляется практически везде в VCL, будучи объявлевленным в TControl. В группе Touch.Gestures.Custom вы можете заметить мой собственный жест в форме «Z». Ветка «Standard» содержит встроенные жесты: наиболее общие, предлагаемые по умолчанию. Они поддерживаются каждым компонентом. Но чтобы они отображались, вы должны связать компонент с TGestureManager, что фактически влечет за собой линковку с модулем, в котором объявлены эти стандартные жесты.

Как видно, произвольный контрол умеет реагировать на множество жестов (исходя из флажков рядом с ними). Вы можете использовать их на практике, отметив жест флажком в Object Inspector`е и написав собственный код обработки события OnGesture. Параметры события таковы:
  • Sender: TObject;
  • const EventInfo: TGestureEventInfo;
  • var Handled: Boolean;

Понятно, что второй параметр содержит всю информацию, которая нам может потребоваться.

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

В категории «Gestures» есть другие компоненты: TGestureListView, наследник TCustomListView, отображающий названия жестов вместе с миниатюрами для быстрого узнавания. Часто очень пригождается. TGesturePreview есть в точности то, как он и называется: контрол, который может отображать анимацию в форме указанного жеста. Кстати говоря, в вашем распоряжении достаточно свойств, чтобы настроить его внешний вид как угодно. И, конечно же, TGestureRecord — простая панель, которая умеет считывать рисующийся на ней жест.

К слову, в категории «Touch» есть TTouchKeyboard — компонент экранной клавиатуры, обычной для приложений контент-киосков или планшетных. Приятная особенность — свойство Layout, позволяющее вам получить боковую клавиатуру вместо обычной.

image
Два контрола TTouchKeyboard. Один с обычной, другой — с цифровой раскладкой.

Итак, этот пост был посвящён обзору возможностей естественного ввода в RAD Studio 2010. Он не планировался ни как исчерпывающее введение, ни как замена справочной системе. Но он дал общее впечатление о том, что представляет собою эта вещь.
А ваш покорный слуга постарается своевременно выкладывать на Хабрахабр переводы интересных постов о нововведениях в RAD Studio 2010, сборные или отдельные. Потому что, судя по блогам, там есть на что посмотреть.
Tags:
Hubs:
Total votes 32: ↑25 and ↓7 +18
Views 6.5K
Comments Comments 12