代码之家  ›  专栏  ›  技术社区  ›  Brian Frost

是否有Delphi“操纵杆”控制?

  •  2
  • Brian Frost  · 技术社区  · 16 年前

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

    5 回复  |  直到 14 年前
        1
  •  3
  •   Marco van de Voort    16 年前

    阿法克绝地(绝地阿皮利布?)也有一个操纵杆头。它是winapi,不是com,所以不涉及tlb

        2
  •  2
  •   NGLN Selim Serhat Çelik    14 年前

    尝试 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;
    
        3
  •  1
  •   The_Fox    16 年前

    也许你可以自己做点类似的东西。

    1. 取一个面板,在鼠标上下移动事件时注册。
    2. 在mousedown上,设置一个布尔值(fButtonDown),这样您就知道mouseButton被按下并保存mousePointer的x和y坐标。
    3. 在mousemove上,检查按钮是否向下(fButtonDown)并移动对象。鼠标执行器从保存位置移动得越多,移动得越快。
    4. 在mouseup上,将fButtonDown设置为false

    以上是非常原始的,但应该是有效的。

        4
  •  0
  •   Carl Smotricz    16 年前

    我在谷歌上搜索“操纵杆动态链接库”,发现了无数。您可以将其中一个抛出到您的项目中,然后只需为它编写一个tlib头(或者不管它叫什么,有一段时间没有这样做),就可以从Delphi访问它的C API。

        5
  •  0
  •   Wodzu    16 年前

    您可以使用Delphix组件。它们是DirectX的包装器,据我所知,其中一个包装器环绕着DirectX操纵杆接口。它以Delphi样式包装,因此很容易使用。