掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のペインからなるプログラムで、フォーカスの有無により各ペインのタイトル部の色を変えるには (ID:47521)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
先ほどはご助言、誠にありがとうございました。 ご助言を踏まえ、以下のコードを実行してみましたところ、なんとなく希望通りの動作になっているようです。 まだ確実ではないのですが、もう少し試行錯誤してみたいと思います。 ※フォームに、Panel1、2と、Memo1、2、SpeedButton1の5つを追加し、以下のイベント等を記述しました。 procedure TForm1.FormCreate(Sender: TObject); begin Application.OnActivate := ColorChange; Application.OnDeactivate := ColorChange; Screen.OnActiveControlChange := ColorChange; end; // 手動で追記したprocedure。 procedure TForm1.ColorChange(Sender: TObject); begin Panel1.Color := clInactiveCaption; Panel2.Color := clInactiveCaption; // ↓モーダルダイアログが出ているときは、IsWindowEnabledがFalseになることを利用した判別方法。(モーダルでないダイアログを出すときは、別の条件が必要かも。) if not IsWindowEnabled(Self.Handle) then exit; if Memo1.Focused then Panel1.Color := clActiveCaption; if Memo2.Focused then Panel2.Color := clActiveCaption; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Screen.OnActiveControlChange := nil; // これがないとなぜかエラーが起こる? end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin // 前面にダイアログが表示されたときの動作を確認するためのコード。 ShowMessage(''); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.