我的建議和解決方法是在兩者之間使用MouseDown和MouseDown Events進行一些時間測量。
unit UnitMainForm;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Layouts;
type
TForm1 = class(TForm)
VertScrollBox1: TVertScrollBox;
GridPanelLayout1: TGridPanelLayout;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
private
{ Private-Deklarationen }
FTimeStamp: TDateTime;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
System.DateUtils;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
FTimeStamp := Now;
TButton(Sender).Text := 'Mouse Down';
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
TButton(Sender).Text := 'Mouse Up ' + IntToStr(MilliSecondOf(Now-FTimeStamp));
if (MilliSecondOf(Now-FTimeStamp) < 200) then
begin
TButton(Sender).Text := TButton(Sender).Text + ' OK';
end;
end;
end.
如果時間少於200毫秒,建議使用手指觸摸,並且您應該很好。