Delphi 2010 представила Delphi отличную поддержку прикосновений и жестов.
Чтобы узнать больше об этом, перейдите на сайт EDN и найдите повторы CodeRage 4. Существует сессия под названием «Руки на жесты в VCL« от Seppy Bloom. Также в CodeRage 5 имеется сессия под названием «Жесткие возможности для новых приложений и текущих проектов» от Vesvolod Leonov.
Глава 6 Марко Канту в "Delphi 2010 Handbook" также охватывает контакт и жест в Delphi.
В конце концов, вы можете проверить Chris Bensen's weblog для некоторых вводных сообщений и демонстрационного исходного кода о поддержке касаний и жестов в Delphi.
Я, кажется, не в состоянии даже принести виртуальную клавиатуру, когда компонент усиления фокусировки и скрыть его, когда он теряет это.
В Delphi 2010 и более поздних версиях уже доступен keyboard component с сенсорным управлением. Чтобы сделать это видимым или скрыть его при изменении фокуса, вы можете обрабатывать сообщение VCLи отображать клавиатуру, когда управление, получающее фокус, происходит от определенного класса или соответствует некоторым особым условиям. Вот пример кода:
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
TouchKeyboard1: TTouchKeyboard;
private
procedure ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
procedure CmFocusChanged(var Msg: TCMFocusChanged); message CM_FOCUSCHANGED;
public
{ Public declarations }
end;
/// Implementation
procedure TForm1.ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
var
APoint : TPoint;
begin
if Control is TCustomEdit then
begin
APoint := Control.ClientToScreen(Point(0,0));
APoint := Keyboard.Parent.ScreenToClient(APoint);
Keyboard.Left := APoint.X;
Keyboard.Top := APoint.Y + (Control.Height);
Keyboard.Visible := True;
end
else
Keyboard.Visible := False;
end;
procedure TForm1.CmFocusChanged(var Msg: TCMFocusChanged);
begin
ActivateVirtualKeyboard(Msg.Sender, TouchKeyboard1);
end;
Код выше вызовов ActivateVirtualKeyboard каждый раз при изменении фокуса. Msg.Sender - это контроль, который получил фокус. ActivateVirtualKeyboard проверяет, является ли элемент управления потомком TCustomEdit (такие компоненты, как TEdit или TMemo, происходят из этого класса). Если элемент управления получен из TCustomEdit, он размещает виртуальную клавиатуру прямо под элементом управления и делает клавиатуру видимой; в противном случае он скрывает клавиатуру.
В образце кода у нас есть редактирование, заметка и кнопка в Form1. Клавиатура должна быть видна для Edit1 и Memo1 и спрятана, когда Button1 имеет фокус.
Расчет для позиции клавиатуры на экране не так уж и умный, и клавиатура может опуститься слишком сильно, если элемент управления с фокусом находится очень близко к нижнему краю формы. Во всяком случае, позиционирование элемента управления на экране выходит за рамки вашего вопроса.
Поиск `touch` и` gesture`, это основные функции, поддерживающие программирование планшета. – 2010-11-29 12:24:05