アプリケーションにフォーカスがあるかどうかを確認します。フォーカスがない場合は、通知領域のすぐ上にアラートウィンドウをポップアップして、エンドユーザーにメッセージを表示します。
8582 次
4 に答える
18
を呼び出してから、関数Windows.GetForegroundWindow()
に渡します。がプロセスに属している場合は、 nil以外のポインタを返します。例えば:HWND
Controls.FindControl()
TWinControl
HWND
if FindControl(GetForegroundWindow()) <> nil then
// has focus ...
else
// does not have focus ...
于 2010-09-14T20:40:04.240 に答える
5
D2007にはこの便利なプロパティがあります
if Application.Active then
//
于 2016-06-13T14:38:15.680 に答える
4
アプリケーションが単一のフォームで構成されている場合は、
GetForegroundWindow = Handle
十分であろう。上記の式は、フォームがフォアグラウンドウィンドウである場合、つまりキーボードフォーカスがこのフォームのコントロール(またはフォーム自体)に属している場合にのみ当てはまります。
アプリケーションが複数のフォームで構成されている場合は、それらをループして、それらのいずれかが一致するかどうかを確認しますGetForegroundWindow
。
于 2010-09-14T20:21:42.423 に答える
0
Remysの応答のわずかなバリエーションは次のとおりです。
Var
Win: TWinControl;
Begin
Win := FindControl(GetForegroundWindow);
if Win <> nil then
// StringGrid1.Row :=5;
// StringGrid1.SetFocus;
コンパイルは問題ありませんが、デバッグ中に信頼性が低いことがわかりました。ウィンドウがフォーカスされていない場合でもstringgrid.setfocusが呼び出され、エラーが発生します。
于 2012-09-25T08:57:04.430 に答える