掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のペインからなるプログラムで、フォーカスの有無により各ペインのタイトル部の色を変えるには (ID:47514)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
定石は知りませんが、私ならTApplicationEventsコンポーネントのOnIdleイベントを使います。 この方法は楽なので好きです。 procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin PanelColorChange([TMemo, TListView, TTreeView], [Panel1, Panel2, Panel3]); end; procedure TForm1.PanelColorChange(WinCtrls: array of TWinControlClass; Panels: array of TPanel); var I: Integer; begin for I:=0 to High(WinCtrls) do if (Self.ActiveControl is WinCtrls[I]) then Panels[I].Color:=clActiveCaption else Panels[I].Color:=clInactiveCaption; end; 実用に供するには、以下のような点について仕様を決め、調整する必要があると思います。 ・上記コードはすべてのTMemo/TListView/TTreeViewが対象です。除外したいものがある場合。 ・他のコントロール(例えばTButton)にフォーカスがあるときはどうしたいのか。 ・どのコントロールにもフォーカスが無い場合はどうしたいのか。 →なお、フォーカスを持つコントロールが無いとき、Self.ActiveControlは nil になります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.