0,0
рейтинг
11 августа 2009 в 07:08

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

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, сборные или отдельные. Потому что, судя по блогам, там есть на что посмотреть.
Перевод: Wings of Wind
Александр Полозов @Skiminok
карма
274,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (12)

  • 0
    Да, намечается что-то очень интересное. Ждём видео на офф. сайте про эти фишки.
  • 0
    Спасибо за перевод.
  • 0
    Как я рад, что Delphi не дают зачахнуть и умереть :) Скорей бы испытать новую студию.
  • 0
    На сайте появилось видео про жесты:
    etnaweb04.embarcadero.com/rad-studio-2010/
  • 0
    Вообще интересный вопрос, как на уровне приложения движения реализованы, у меня, кроме как использовать нейронную сеть, ничего больше на ум не приходит
  • +2
    Maxim Korobov: я вместе с товарищем (Ненашев Илья) сделали точно такой же механизм распознавания жестов, с точно таким же редактором 6 лет назад.
    Насколько я помню, использовалась только геометрия. В частности, расстояние от точки до прямой. Ничего более.
    Когда оно выйдет надо будет просмотреть исходники, а то вдруг свои комментарии обнаружаться ;)
    • 0
      Угу, пёрли идею с программы Sensivia (http://www.sensiva.com/)
      • 0
  • 0
    Эх… неужели я на неё перееду с насиженной семёрки?)
    На 2006/2007 посматривал но что-то там мне непонравилось (уже не помню что) и решил ещё немного подождать.
    Как вышла 2009-я — потестил демку, даже собрал на ней пару больших проектов — всё заработало без напильника. Думал, вот как закончу текущий проект — начну плавный переезд на 2009-ю.
    Так нет, 2010 на горизонте нарисовалась) Очень много вкусностей и всё хочется попробовать. Жаль только 64-х битного компиллятора не видать пока… пару лет назад писал софт для обслуживания 5Tb хранилища данных, так пришлось все файловые операции на WinAPI писать т.к. TStreem такие объёмы не понимает(
    • 0
      Я не переползаю на 2009-10 потомучто сильно привык у 7-ке, к её справке.
      Однако столько удобства можно получить в новой версии 2010.
      Мне для уменьшения психологической ломки нужно будет, чтобы интерфейс 2010 хотя бы был похож на 7-ку, думаю вот эта инструкция поможет не только мне:
      «Как настроить Delphi 2010 так чтобы выглядело как Delphi 7» видео и текст на английском blogs.embarcadero.com/andreanolanusse/how-to-configure-delphi-2010-to-look-work-and-feel-like-delphi-7/
      Если кто видел такую инструкцию уже на русском — дайте линк.
  • 0
    надеюсь, это не самое значительное нововведение.

    PS юникод сколько ждали, 64 бита до сих пор не прикрутили… мдя.
    • 0
      Я чувствую 64 бита, нам ещё долго ждать

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.