如何在Delphi中查看是谁触发了手势标准动作?

如何在Delphi中查看是谁触发了手势标准动作?,delphi,delphi-2010,gesture,Delphi,Delphi 2010,Gesture,我找了又找 该问题的解决方案是使用TAction.ActionComponent 我有一个带有TGestureManager的表单,用动作设置标准手势(如左、右) 现在在execute事件中,最好知道哪个组件初始化了手势,这样我就可以决定做什么了。(例如,有两个面板,我需要知道滚动哪个面板) 但是,在本例中,TAction.ActionComponent为零 我尝试了感觉,但定义的手势不会触发该事件,发送者始终是表单本身 那么我怎么知道是哪个组件触发了那个手势动作呢 谢谢。通过更多的测试,我认为

我找了又找

该问题的解决方案是使用TAction.ActionComponent

我有一个带有TGestureManager的表单,用动作设置标准手势(如左、右)

现在在execute事件中,最好知道哪个组件初始化了手势,这样我就可以决定做什么了。(例如,有两个面板,我需要知道滚动哪个面板)

但是,在本例中,TAction.ActionComponent为零

我尝试了感觉,但定义的手势不会触发该事件,发送者始终是表单本身

那么我怎么知道是哪个组件触发了那个手势动作呢


谢谢。

通过更多的测试,我认为解决方案之一可能是跳过使用action并使用Form.OnTesture,然后使用EventInfo.Location找出手势开始于哪个组件。然后我们可以使用EventInfo.GestureID来决定要做什么

procedure TForm5.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
  C : TControl;
begin
  C := FindVCLWindow(ClientToScreen(EventInfo.Location));
  if Assigned(C) and (EventInfo.GestureID < 0) then
    edt1.Text := C.Name
  case EventInfo.GestureID of
    1 : DoThis;
    2 : DoThat;
  end;
end;
procedure TForm5.form手势(发送方:TObject;const-EventInfo:TGestureEventInfo;变量处理:Boolean);
变量
C:t控制;
开始
C:=FindVCLWindow(客户端到屏幕(EventInfo.Location));
如果分配了(C)和(EventInfo.GestureID<0),则
edt1.文本:=C.名称
的case EventInfo.GestureID
1:多此一举;
2:DoThat;
结束;
结束;

任何更好的答案最好放在动作执行中都是受欢迎的。

事实是
tractionmanager.OnExecute
事件参数
action.ActionComponent=nil
但是动作本身正在执行。不知道为什么要使用动作(
TAction
)和案例a
GestureID
或其他什么。您可以简单地指定要执行的某个组件的手势
TAction
,然后它就会发生。如果您阅读原始问题,您就会知道我想知道手势从哪个控件开始,而我在通过指定的操作执行时找不到该控件。