ongesture delphi что это
Обзор механизма естественного ввода в RAD Studio 2010
На этой неделе мы немного обсудим нововведения в VCL, особо фокусируясь на возможностях естественного ввода (жесты и прикосновения) в RAD Studio 2010. Примите во внимание, что всё, о чём мы говорим, есть лишь бета-версия, и до релиза всё может измениться.
С помощью нового механизма вы можете выбирать разнообразные предопределённые движения вашего манипулятора (либо создавать новые, пользовательские) для того, чтобы ассоциировать их с разными действиями. Пользователям браузера Opera (и не только) это покажется знакомым. Для остальных, напомню, что Windows (а значит, и Delphi) давно содержит одно старое движение: Drag&Drop. Считайте, что этот механизм есть нечто подобное, но гораздо более мощное. Разумеется, это будет активно использоваться в программировании с использованием пера, приложениях для контент-киосков с использованием тачскрина и т.д.
Если вдаваться в детали, проясним одно положение: Delphi пытается использовать механизм обработки естественного ввода выпускающегося сейчас Windows 7. Если это невозможно (к примеру, приложение запущено на Windows XP), используется собственный механизм распознавания. Как он это делает? С помощью некоторого нововведения в языке (но это тема другого поста, конечно =)).
Разумеется, чтобы управлять нашими жестами, существует Custom Gestures Editor. Вот он:
И также вы можете заметить, что мультитач-планшеты и экраны тоже поддерживаются. Их настройки можно увидеть в нижней части изображения.
Два контрола TTouchKeyboard. Один с обычной, другой — с цифровой раскладкой.
Итак, этот пост был посвящён обзору возможностей естественного ввода в RAD Studio 2010. Он не планировался ни как исчерпывающее введение, ни как замена справочной системе. Но он дал общее впечатление о том, что представляет собою эта вещь.
А ваш покорный слуга постарается своевременно выкладывать на Хабрахабр переводы интересных постов о нововведениях в RAD Studio 2010, сборные или отдельные. Потому что, судя по блогам, там есть на что посмотреть.
RAD Studio 2010. Обзор компонентов Gestures (Жесты)
Разработчики не поскупились на новшества, как в плане новых языковых конструкций, типов данных и пр., так и в содержании палитры компонентов. Кстати, про разработчиков, если Вы хотите увидеть всю команду разработчиков, то можете сделать это следующим образом:
Компоненты Gestures позволяют организовать управление Вашим приложением при помощи жестов мышью. Всего вкладка содержит четыре компонента:
Начнем разбираться по порядку.
1. Работа с GestureManager. Создаем свои жесты (Gestures) в редакторе жестов, используем нестандартные жесты в программе.
Компонент Gesture Manager предназначен для организации управления приложением при помощи жестов. Всего компонент содержит три свойства:
Выберите в Object Inspector главную форму Вашего приложения. Теперь найдите список свойств Touch :
Давайте, например, создадим новый жест в форме буквы Z и используем его в приложении.
Жмем в окне Custom Gestures кнопку Create… и перед нами открывается окно дизайнера новых жестов. Не долго думая, зажимаем левую кнопку мыши и рисуем в дизайнере наш новый жест:
Кроме этого, Вы можете редактировать новый жест по точкам. При этом можно оперировать как координатами точек, список которых расположен слева, так и редактировать точки простым перетаскиванием их мышью по полю редактора. Для того, чтобы делать линии жестов ровными, я советую делать так:
В результате редактирования у меня получился вот такой красивый жест:
Теперь задаем жесту уникальное имя, например, MyGesture и сохраняем его в списке.
Для того, чтобы Ваше приложение реагировало на жест можно использовать два варианта:
Рассмотрим оба варианта. Создаем событие onGesture у главной формы приложения. Событие содержит следующие параметры:
Как можно заметить в EventInfo и содержится вся информация по жесту.
Напишем такой обработчик события:
Теперь запустите приложение и зажав левую кнопку мыши нарисуйте на форме наш жест. Если все сделано правильно, то заголовок окна измениться на » Hello World «.
Теперь запускаем приложение и радуемся. Программа по-разному реагирует на жесты и в зависимости от произведенного жеста изменяет заголовок окна:
Подобным образом Вы можете настроить реакцию Вашего приложения на любые жесты.
2. Компонент GestureListView. Просматриваем доступные жесты в приложении.
GestureListView также как и любой другой компонент из VCL может реагировать на жесты.
3. Компонент GestureRecorder. Даем возможность пользователям самим создавать жесты.
а на onClick у кнопки:
4. Предпросмотр жестов. Компонент GesturePreview.
Для того, чтобы проводить не только предпросмотр, но и тестирование жеста, можно сделать например так:
2. При срабатывании определенного жеста у GesturePreviw выводить сообщение пользователю. Я, например, организовал это с помощью вот такого обработчика события:
Ну, а дальше можете эти точки редактировать, удалять и пр.
Gestures in FireMonkey
Gestures in multi-device applications are very similar to gestures in VCL. A gesture is considered to be intended for the control that is under the finger (for Windows and mobile) or under the mouse cursor (for Windows and macOS). Alternatively, the gesture can be handled by one of the control’s parents (in the hierarchy, the first one that handles the gesture).
Contents
There are two types of gestures:
Platforms for Gestures
This topic describes gestures for both desktop and mobile platforms:
How to Use Gestures with FireMonkey
For a control to be able to use gestures, the control must have the Touch property.TForm and many of the objects derived from TFmxObject support this property.
Enabling Standard Gestures
To add support for standard gestures for a control, you need to do the following:
Selecting a Standard Gesture
Here are the gestures in the TStandardGesture Enum as presented for you to select in the Object Inspector:
Implementing the OnGesture Event Handler
Here is an example of an OnGesture procedure for a TPanel named «Panel1» placed on a TForm named «Form 28» (there is also a TMemo named «TMemo1» on the form). The event handler uses FMX.Gestures.GestureToIdent:
The code above writes in the memo the name of the gesture for which the event was fired (Up, Down, and so on).
Enabling Interactive Gestures
To add support for interactive gestures for a control:
Ongesture delphi что это
Сегодня мы рассмотрим использование стандартных жестов в Delphi firemonkey.
Жесты являются одним из основных элементов управления на сенсорных устройствах. Поэтому без их изучения сложно представить дальнейшее программирование под android.
На экранах смартфонов часто не хватает места для размещения всех компонентов. Для примера возьмем калькулятор из одного из предыдущих уроков(не обязательно делать все как на скриншотах, достаточно тех компонентов, которые описываются в этом уроке ). Наша задача: при проведении пальцем по экрану справа налево, открыть невидимую панель с дополнительными функциями. А при проведении слева направо скрыть эту самую панель.Вот небольшой пример(открытая скрытая панель доп. функций):
На форме нам понадобится Layout(свойство align назначаем alRight, свойство visible=false). На layout’е размещаем 4 кнопки. Основной компонент, который нам нужен – GestureManager.
Итак, изначально у нас на форме невидимая панелька с четырьмя кнопками.
Раскройте свойство touch нашей формы и подсвойству gesturemanager назначьте наш gesturemanager1. После этого в свойствах вам откроется вкладка Gestures, а затем standart. В standart нам нужно отметить галочками 2 пункта как на скриншоте, с требуемыми жестами.
Далее, создаем событие OnGestures для нашей формы, вот его код:
Также вы можете использовать не стандартные жесты, а рисовать свои(об этом в другой раз), но как правило, стандартных жестов хватает практически для любого случая. Удачи!
Delphi Gestures with TeeChart
Since Embarcadero introduced touch screen support, the way gestures are being handled has evolved. Now that we are in the RAD Studio XE8 days, it has become pretty straightforward as documented in their “Gesturing Overview” article.
That article lays out the foundation on how to work with touch gestures and controls. Applying that to TeeChart, means we’ll need TChart and TGestureManager components. TGestureManager, which manages all the gestures that can be used by the control, will have to be associated to TChart’s Touch property. There you can choose which gestures will be associated with the control. There are three kinds of gestures: standard, custom and interactive. The example discussed is based on Delphi’s interactive gestures example.
Here you can download the full project used for the article. Now I’ll explain how to create it. Before starting to write code, please do the following at design-time: add a TChart component, add a TGestureManger component, passing the gesture manager to TChart‘s Touch property and enable Zoom, Pan and DoubleTap interactive gestures on it.
Once this is done, it’s time to start typing code. First of all we’ll deactivate some TeeChart standard interactions so they don’t interfere with the functionality gestures will implement. So we will disable default zoom and panning in form’s OnCreate event:
After that, it’s the turn of TChart‘s OnGesture event implementation:
We are checking for TInteractiveGestures gestures performed on the chart, using event’s TGestureEventInfo, and implement a specific gesture handler method for each one. Finally, we set the Handled parameter to True so that the event is not propagated further.
Let’s speak about gesture handler methods now, starting with zoom:
Here we are implementing something different and simpler than the standard zoom in TeeChart. It’s based on the difference between the current distance and pinch that the gesture provides and the distance saved from previous calls, not allowing a zoom factor smaller than 10% of the original size.
Let’s continue with the pan gesture which, in this example, will be used for rotating the chart instead of panning it:
Similar to the pinch zoom gesture, here displacement (calculated from the screen position) is being used to rotate and elevate the chart.
Finally, the double tap gesture:
It’s only used for resetting chart properties to their original values.
I hope this example is useful to illustrate the possibilities TeeChart has with multi-touch gesture on touch devices. It only covers a few cases but this opens up the possibility to a new world of charting interactions.
Here’s the complete code listing for the example discussed in this article: