2017-02-27 6 views
1

私はペイントしているフォームを持っています(OnPaint)。ユーザーのグリップをクリックして形状を変更します。しかし、私は、ユーザーがフォームの端を越えて移動することを許可したいと思います。マウスがエッジを過ぎたとき、どのようにマウスモーメントを得ることができますか? TrackBar上で動作するため、これを行うことができます。それはフォームではなくコンポーネントですが、私はフォームスタイルを変更したり、何かを登録して同様のマナーで動作させることができます。FMX:フォームの外にフォームmousemoveイベントを取得するにはどうすればいいですか?

私は、フォームの背景を透明にすることを理想的に考えています。同じソリューションでは、透明な領域にマウスをかけることができます。

答えて

2

FMXは、AutoCaptureプロパティを使用しています。マウスボタンが押されている間、マウスがキャプチャされます。

constructor TMyGrip.Create(AOwner: TComponent); 
begin 
    inherited; 

    AutoCapture := True; 
    CanFocus := True; 
end; 

これはフォームでは機能しません。しかし、クライアント全体を塗りつぶすフォームにTLayoutを追加することができます。

FMXは内部でFWinService.SetCapture(Self);FWinService.ReleaseCapture(Self);を使用しており、これはフォームを受け入れます。私はこれをテストしていませんが、そのような内部関数を呼び出すと、FMXフレームワークをかなり混乱させることがあります。

関連する問題