gpt4 book ai didi

delphi - 我如何查看谁在 Delphi 中触发了手势标准操作?

转载 作者:行者123 更新时间:2023-12-03 17:59:40 25 4
gpt4 key购买 nike

我搜索并找到了 How can I see who triggered an action in Delphi?

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

我有一个带有 TGestureManager 的表单,设置标准手势(比如左右)和 Action 。

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

但是,在这种情况下,TAction.ActionComponent 为 nil。

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

那么我如何知道哪个组件触发了该手势操作?

谢谢。

最佳答案

通过更多测试,我认为解决方案之一可能是跳过使用 Action 并使用 Form.OnGesture,然后使用 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;

欢迎任何更好的答案,最好放在操作执行中。

关于delphi - 我如何查看谁在 Delphi 中触发了手势标准操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com