フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: マウス位置のコントロールを知るには?
DEKO
管理者
投稿数: 2691
マウス位置のコントロールを知るには?
on: 2013/04/15 06:11 Mon

VCL の場合だと、ControlAtPos() でマウス位置のコントロールを得られましたが、FireMonkey では ObjectAtPoint() を使います。

var
Obj: IControl;
Control: TObject;
dMousePos: TPointF;
begin
{$IF FireMonkeyVersion >= 17.0}
dMousePos := Screen.MousePos; // XE3 以降
{$ELSE}
dMousePos := Platform.GetMousePos; // XE2
{$IFEND}
Obj := IControl(ObjectAtPoint(dMousePos));
// ウィンドウキャプションにクラス名を表示
if Obj = nil then
begin
Caption := Self.ClassName;
end
else
begin
Control := Obj.GetObject;
Caption := Control.ClassName;
end;
end;

 
コードではマウスのグローバル座標からコントロールを取得しています。マウスのイベントハンドラの引数に渡されるクライアント座標を使うのであれば、ClientToScreen() で座標変換を行わなくてはなりません。また、HitTest プロパティが False のコントロールは取得できません。

※ Platform 変数は XE3 (FM2) 以降では使えません。

See Also:
[FMX.Platform.TPlatform - XE2 (DocWiki)]
http://docwiki.embarcadero.com/Libraries/XE2/ja/FMX.Platform.TPlatform

[FMX.Platform.TPlatformServices - XE3 (DocWiki)]
http://docwiki.embarcadero.com/Libraries/XE3/ja/FMX.Platform.TPlatformServices

[FMX.Forms.TCommonCustomForm.ObjectAtPoint (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/FMX.Forms.TCommonCustomForm.ObjectAtPoint

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.017 sec.