滚动vs选择delphi XE6

时间:2014-07-10 16:36:37

标签: ios delphi delphi-xe6 firemonkey-fm3

我有一个gridpanellayout,大约有16行和5列。例如,每个字段具有设置为TalignLayout.Client的TRectangle。每个矩形具有执行动作的onclick事件(例如,通过改变其颜色突出显示所点击的矩形)。有16行,我的网格面板超过了用户设备(如iPhone)的高度,因此我将网格放在VerticalScrollbox的顶部。

在使用手指滚动的用户和使用触摸突出显示项目的用户之间进行解密的最佳方法是什么。我认为这是最简单的选择,我只想将点击事件更改为双击事件。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我的建议和解决方法是使用MouseDown和MouseDown事件,并在其间进行一些时间测量。

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毫秒,建议使用手指触摸,你应该好好去。