掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のペインからなるプログラムで、フォーカスの有無により各ペインのタイトル部の色を変えるには (ID:47515)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
正直OnIdleを使用する方法はおすすめできません。 OnIdleはかなりの高頻度でコールされることになりますが、そのほとんどが不必要です。 昨今ではChromeの消費電力が(バグにより)高いということがニュースになるくらいですから、 手抜きのために無駄な負荷をかけるのは極力避けるべきではないかと思います。 と文句だけなら誰でも言えますので簡潔な解決方法を。 TFormにはSetFocusedControlというメソッドがありますので、 これをoverrideすれば簡単にフォーカスの移り変わりが直接分かります。 type TForm1 = class protected function SetFocusedControl(Control: TWinControl): Boolean; override; end; function TForm1.SetFocusedControl(Control: TWinControl): Boolean; begin Result := inherited; // ←必須です // ここに任意の処理 end; このとき、Resultはフォーカスの有無を確実に示すものではないので注意してください。 詳しくはこちらを。 http://docwiki.embarcadero.com/Libraries/XE8/ja/Vcl.Forms.TCustomForm.SetFocusedControl また、同様の方法としてScreen.OnActiveControlChangeを使う方法もあります。 上記の方法は設定したフォームのコントロールのみが対象なのに対し、 Screen.OnActiveControlChangeはアプリケーションが含む全フォームのコントロールが対象になります。 (Screen.OnActiveControlChange自体はSetFocusedControl内で呼ばれています)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.