私は多数のMDI子ども(MDI以外のフォームも含む)を持つMDIアプリケーションを持っており、どのフォームが現在アクティブで、いつもフォーカスを持っているかをトラッキングしたい。ユーザーがアプリケーション内のあるフォームから別のフォームに切り替えると、ウィンドウのアクティブ化メッセージをトラップして、バックグラウンドでグローバル変数をアクティブなフォームのプロパティに設定します(このプロパティは基本クラスから継承されます)。私はもともと(私のアプリケーションのすべてのフォームを使用する)基本クラスのOnActivateイベントハンドラにコードを入れましたが、このイベントが必ずしも発生しないことに気づきました。何か案は?Delphi - 現在のフォーカスを持つウィンドウ/フォームのキャプチャ
私はDelphi 2006 BDSを使用しています。
フォーカスを正確にはどういう意味ですか?入力フォーカスを意味する場合は、Windows.GetFocusを呼び出してFindControlに結果を渡し、最後にフォームに到達するまで親階層を歩くことができます。 –
@David:階層の一番上が見つかるまで(Parent = nil)と言います。フォームは、フォーム内のフレーム内のフォーム内のフレーム内に埋め込むことができます。 –
@マージャン良い点。 –