次の手順を使用して、Delphi XE3でマウスのコントロールを識別しています。すべてはvcl.contols
のためにうまくいきます。ただし、マウスがTImage
を超えると、コントロール名は返されません。マウスカーソルの下にあるコンポーネントを識別するには、TImageコントロールでは機能しません。
procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: oolean);
var
ctrl : TWinControl;
begin
ctrl := FindVCLWindow(Mouse.CursorPos);
if ctrl <> nil then begin
Label2.caption := ctrl.Name;
//do something if mouse is over TLabeledEdit
if ctrl is TLabeledEdit the begin
Caption := TLabeledEdit(ctrl).Text;
end;
end;
end;
TImage
の名前にアクセスするための簡単な方法がある - 私は何かが本当に簡単行方不明ですか?
として再宣言しなければならないことに注意してください、私が持っているのTControl – WobblyBob
を使用例を探した - FindDragTarget(constの順位:TPoint; AllowDisabled:ブール):TControlの しかし、一つを見つけることができませんでした:( は誰が正しい方向に私を指すか、任意のOBJなどの例を提供することができますects/itemsを 'uses'セクションに追加する必要がありますか? – WobblyBob
私の友好的なアドバイスは、「コピー貼り付けプログラマー」をやめることです。ドキュメントを読んで考えてみてください。 'FindVCLWindow()'がなぜあなたのために機能しないのか、そして代わりに何の機能を使うべきなのかが分かっています。関数が何を返すのか知っていれば、 'ctrl'変数をその型に変更します。あなたがそれを推測できない場合、追加の 'AllowDisabled'パラメータが何を意味するのかを見てください。 –