Delphi 是否有德尔福';操纵杆';控制

Delphi 是否有德尔福';操纵杆';控制,delphi,controls,mouse,joystick,Delphi,Controls,Mouse,Joystick,我想用鼠标将一个物体在X和Y方向上对齐。我可以通过使用各种旋转控件(或按钮)来滚动解决方案,但它很混乱,我想知道是否有一个控件(如操纵杆)可以使用鼠标提供2轴控制,并根据其位置以不同的速率触发事件?我在谷歌上搜索了“操纵杆dll”,发现了无数个。您可以将其中一个应用程序扔进您的项目中,然后从Delphi访问它的C API,只需为它编写一个TLIB头(或者不管它叫什么,已经有一段时间没有这样做了)。您可以使用DelphiX组件。据我记忆所及,它们是DirectX的包装器,其中一个包装在Direct

我想用鼠标将一个物体在X和Y方向上对齐。我可以通过使用各种旋转控件(或按钮)来滚动解决方案,但它很混乱,我想知道是否有一个控件(如操纵杆)可以使用鼠标提供2轴控制,并根据其位置以不同的速率触发事件?

我在谷歌上搜索了“操纵杆dll”,发现了无数个。您可以将其中一个应用程序扔进您的项目中,然后从Delphi访问它的C API,只需为它编写一个TLIB头(或者不管它叫什么,已经有一段时间没有这样做了)。

您可以使用DelphiX组件。据我记忆所及,它们是DirectX的包装器,其中一个包装在DirectX操纵杆界面上。它以德尔菲风格包装,因此易于使用。

阿法克绝地(绝地阿皮利布?)也有一个操纵杆头。它是winapi,而不是COM,所以不涉及TLB,也许你可以自己制作这样的东西

  • 取一个面板,在鼠标上下移动事件时注册
  • 在MouseDown上,设置一个布尔值(fButtonDown),以便知道鼠标按钮已按下,并保存鼠标指针的X和Y坐标
  • 在MouseMove上,检查按钮是否已按下(fButtonDown)并移动对象。鼠标光标从保存位置移动得越多,移动得越快
  • 在MouseUp上,将fButtonDown设置为false
  • 以上内容非常简单,但应该可以使用。

    Try,一个由我编写的基于纯WinAPI(MMSystem.pas)的开源组件。可从下载

    界面:

    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
    published
      property AbsCenter;
      property AbsMax;
      property AbsMin;
      property Active default False;
      property Advanced default False;
      property AxisCount;
      property Axises;
      property ButtonCount;
      property HasPOV;
      property ID;
      property OnButtonDown;
      property OnButtonUp;
      property OnMove;
      property OnPOVChanged;
      property PollingInterval default 40;
      property RepeatButtonDelay default 350;
      property RepeatMoveDelay default 350;
      property SuspendScreensaver default False;
      property ThresholdFactor;
    

    您是否考虑过使用箭头键来微调对象的位置(如Word、Photoshop等)?是的,目前就是这样做的,但当您靠近时,当然没有“精细”操作。TLB是用于COM的,而不是简单的过程winapi。我确信您是对的。我记得有一些Pascal头文件是用来在C代码中声明过程的,但我忘记了它们的正确名称。