Вопрос

Одна из больших очков продажи, которые я видел, когда мне пришлось купить Delphi для своей работы, это способность поддерживать планшетный ПК. Теперь клиент компании, где я работаю, хочу использовать планшетный ПК. Я пытался найти примеры Delphi с планшетным ПК, но я не нахожу. У кого-нибудь есть опыт работы с этим? Любые учебники или примеры?

Я не могу даже приносить виртуальную клавиатуру, когда компонент усиливает фокус и скрывает его, когда он теряет его.

Это было полезно?

Решение

Delphi 2010 представил поддержание хорошего прикосновения и жеста для Delphi.

Чтобы получить больше информации об этом, перейдите к ЭДН Веб-сайт и ищите кодировщики 4 повтора. Есть сеанс под названием «Руки на жестах в VCL"от Seppy Bloom. Также в кодировке 5 есть сеанс под названием«Жестыние возможности для новых приложений и текущих проектов«Весволод Леонов.

ГЛАВА 6 MARCO CANTU'S "Delphi 2010 Справочник«Также охватывает связь и жест в Delphi.

В конце концов, вы можете проверить Блогом Криса Бенсена Для некоторых вводных постов и демонстрационного кода о сенсорном и жесте поддержке в Delphi.

Я не могу даже приносить виртуальную клавиатуру, когда компонент усиливает фокус и скрывает его, когда он теряет его.

В Delphi 2010 и более новые версии Touch-eniled Компонент клавиатуры уже доступен. Чтобы сделать это видимым или скрыть его, когда сосредоточиться, вы можете обрабатывать Cm_focuschanged 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;

Код выше вызывает ActuctateVirtKeualKeyboard каждый раз в фокусе изменен. Msg.sender - это контроль, который получил фокус. ActivateVirtualKeybowboard проверяет, является ли управление потомком TCustomedit (компоненты, такие как TEDIT или TMEMO, спускаются от этого класса). Если контроль получен из TCustomedit, то он помещает виртуальную клавиатуру прямо под управлением, и делает клавиатуру видимой; В противном случае он скрывает клавиатуру.

В примерном коде у нас есть редактирование, записка и кнопка на форме1. Клавиатура должна быть видна для редактирования1 и MEMO1 и HID, когда Button1 имеет фокус.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top