是否有Delphi'操纵杆'控制?

时间:2010-01-06 09:38:00

标签: delphi controls mouse joystick

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

5 个答案:

答案 0 :(得分:3)

Afaik Jedi(jedi apilib?)也有一个操纵杆标题。它是winapi,而不是COM,所以没有TLB参与

答案 1 :(得分:2)

尝试NLDJoystick,这是我编写的基于纯WinAPI(MMSystem.pas)的开源组件。它可以从SVN服务器here下载。

界面:

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;

答案 2 :(得分:1)

也许你自己可以做出类似的事情。

  1. 选择一个面板,然后注册鼠标向上,向下和移动事件
  2. 在MouseDown上,设置一个布尔值(fButtonDown),以便您知道按下鼠标按钮并保存鼠标指针的X和Y坐标。
  3. 在MouseMove上,检查按钮是否已关闭(fButtonDown)并移动对象。您的鼠标光标从其保存位置移动得越多,移动的速度就越快。
  4. 在MouseUp上,将fButtonDown设置为false
  5. 以上是非常原始的,但应该有用。

答案 3 :(得分:0)

我用Google搜索“操纵杆dll”,发现无数。您可以将其中一个投入到项目中,然后通过简单地编写一个TLIB头(或者其他任何调用,暂时没有这样做)来从Delphi访问它的C API。

答案 4 :(得分:0)

您可以使用DelphiX组件。它们是DirectX的包装器,据我所知,其中一个包装了DirectX游戏杆接口。它采用Delphi风格,因此易于使用。