Android에서 버튼 길게 누르기 감지 (Delphi)
8024 단어 안드로이드델파이FireMonkeyFMX
길게 누르기를 감지하려면 Gesture를 사용합니다. (iOS의 경우.
다만, 버튼의 클릭 이벤트(OnClick)도 발생하므로 길게 누르기와 구별시키고 싶은 경우는, 플래그를 준비하는 등의 처리가 필요합니다.
샘플 앱
버튼을 길게 누르면 일반 클릭과 처리가 나뉩니다.
양식에 TToolBar를 놓고 TToolBar 위에 TButton을 놓습니다.
나머지 영역에는 ListBox 를 Align = Client 로 배치해, 길게 누를 때는 LongTap, 보통의 클릭시에는 Click 와 ListBox 안에 쓰는 것만으로 간단한 것입니다.
Object Inspector에서 Button1.Touch.InteractiveGestures의 LongTap을 True로 설정하고 Button1의 OnClick, OnGesture, Form1의 OnCreate 이벤트 처리기를 만듭니다.
ControlType 속성 동작
샘플 코드
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
FMX.ListBox, FMX.StdCtrls, FMX.Controls.Presentation;
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
Button1: TButton;
ListBox1: TListBox;
procedure Button1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private 宣言 }
mLongTapFlag: Boolean; // add: 長押し管理フラグ
public
{ public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
if mLongTapFlag then begin
// 長押しの時はフラグをリセット
// このサンプルコードではOnClickイベントを抜ける
mLongTapFlag := False;
Exit;
end;
// 通常のクリックの時には ListBoxにClickと書く
ListBox1.Items.Add('OnClick');
end;
procedure TForm1.Button1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
// 念のためにフラグを初期化
mLongTapFlag := False;
// ジェスチャーの種類が長押し(LongTap)かを判断
if EventInfo.GestureID = igiLongTap then begin
// 長押しであればフラグをセットして
// ListBoxに LongTapと書く
mLongTapFlag := True;
ListBox1.Items.Add('LongTap');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mLongTapFlag := False; // フラグ初期化
end;
end.
Reference
이 문제에 관하여(Android에서 버튼 길게 누르기 감지 (Delphi)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/CYonezawa/items/dcfb76e1dfd1d3724f57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)