Mam's WebSite
建築CGパース住宅CGパース

Mamの覚書Q&A検索

トップページMamの覚書Q&A検索Delphi(FireMonkey(FMX))⇒Q&A


大項目:「 Delphi 」 - 中項目:「 FireMonkey(FMX) 」

「 タッチパネル対応パソコンで、作成するアプリのみフリック機能を無効にするには(Windowsのみ) 」

Delphi(FireMonkey)でパンやズームなどのジェスチャーに対応する場合、
フリック機能が邪魔で、パンやズームをうまく判定できない場合がある。
無効にするには?


回答

VCLの場合はTabletOptionsのtoFlicksのプロパティだけで可能っぽいですがFMXには無いように思います。
1つの方法として、OSのフリックを無効にすればよいのですが、
毎回OSのフリックを手作業で有効や無効にするのも面倒です。
以下ソースで指定したウィンドウハンドルのみフリックを無効にする事が出来ます。

ソース

uses ....,
  ,winapi.windows
  ,FMX.Platform.Win;
 
procedure TForm1.FormCreate(Sender: TObject);
const
  TABLET_DISABLE_PRESSANDHOLD=$1;
  TABLET_DISABLE_PENTAPFEEDBACK=$8;
  TABLET_DISABLE_PENBARRELFEEDBACK=$10;
  TABLET_DISABLE_TOUCHUIFORCEON=$100;
  TABLET_DISABLE_TOUCHUIFORCEOFF=$200;
  TABLET_DISABLE_TOUCHSWITCH=$8000;
  TABLET_DISABLE_FLICKS=$10000;
  TABLET_ENABLE_FLICKSONCONTEXT=$20000;
  TABLET_ENABLE_FLICKLEARNINGMODE=$40000;
  TABLET_DISABLE_SMOOTHSCROLLING=$80000;
  TABLET_DISABLE_FLICKFALLBACKKEYS=$100000;
  TABLET_ENABLE_MULTITOUCHDATA=$1000000;
var at:atom;
    dwHwndTabletProperty:DWORD;
    MICROSOFT_TABLETPENSERVICE_PROPERTY:string;
begin
  //フリックを無効にする
  MICROSOFT_TABLETPENSERVICE_PROPERTY:='MicrosoftTabletPenServiceProperty';
  dwHwndTabletProperty:=TABLET_DISABLE_PRESSANDHOLD+TABLET_DISABLE_PENTAPFEEDBACK+TABLET_DISABLE_PENBARRELFEEDBACK+TABLET_DISABLE_FLICKS;
  at := GlobalAddAtom(PWideChar(MICROSOFT_TABLETPENSERVICE_PROPERTY));
  SetProp(FmxHandleToHWND(self.Handle), PWideChar(MICROSOFT_TABLETPENSERVICE_PROPERTY), dwHwndTabletProperty);
  GlobalDeleteAtom(at);
end;


Mam's WebSite