名前 題名 ▼ おかぽんさん > ▼ snail3さん > > これって簡単に取り出す関数無いですよね。 > > 知っていたら教えて下さい。 > すでにマスターからレスがありますが、FindVCLWindowは、ウインドウハンドルを > 持っているコンポーネントしか拾うことができないようなので、 > 直接の子コントロールしか返してくれないけど、ウインドウハンドルなしでもOKな > ControlAtPosを使ってみると、こんな感じですかね。 > > 上記のWMParentNotify内で行うなら > var > ctrlPos: TPoint; > control1, control2: TControl; > > ctrlPos := Point(Message.XPos, Message.YPos); > control1 := ControlAtPos(ctrlPos, True, True); > while control1 <> nil do begin > control2 := control1; > if control2 is TwinControl then begin > //子コントロールの座標に変更 > ctrlPos := Point(ctrlPos.X - TwinControl(control2).Left, > ctrlPos.Y - TwinControl(control2).Top); > //子コントロール内のコントロールを検索 > control1 := TwinControl(control2).ControlAtPos(ctrlPos, True, True); > end > else begin > control1 := nil; > end; > end; > {ここで control2 がマウス下のコンポーネント > 今更ながら、WMParentNotifyは ウィンドウハンドルのないコントロールからは > 届かないので、TScrollBoxに直接貼ったTLabelとかだと、ここではつかまえることが > できないですね。} GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link