掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
呼び出し元の判別 (ID:42533)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えば,以下のような方法もあります.参考までに. >TForm_Selを呼び出したとします TForm_Selを呼び出したとします ---> TFrom_SelをShowModalで表示します.ですね. 具体的な用語を使用した方がいいですよね.皆様... (えっ!? 大きなお世話...? ) それと,環境を忘れずに(また,書いてしまった... 汗) ShowModal を実行したフォームが非アクティブになることを利用した方法です. Form1, Form2, Form3 を新規プロジェクトで作成します. -------------------- Form1 -------------------- メインフォームです. TButtonを2つと,TEditを配置し,Buttonのクリックを以下のようにします. procedure TForm1.Button1Click(Sender: TObject); begin Form2.ShowModal; end; procedure TForm1.Button2Click(Sender: TObject); begin Form3.ShowModal; end; -------------------- Form2 -------------------- TButtonを1つと,TEditを配置し,Buttonのクリックを以下のようにします. procedure TForm1.Button1Click(Sender: TObject); begin Form3.ShowModal; end; -------------------- Form3 -------------------- 何も配置しません.以下のコードにします. unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Memo1: TMemo; private { Private 宣言 } protected procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE; public { Public 宣言 } end; var Form3: TForm3; implementation uses Unit1, Unit2; {$R *.dfm} //============================================================================= // このフォームがアクティブになる時のWM_ACTIVATEメッセージ処理 // このフォームがアクティブになる時に,非アクティブになるウィンドウを検出 // 検出可能なのは,このフォームが属するアプリのものに限る //============================================================================= procedure TForm3.WMActivate(var Message: TWMActivate); var Control : TWinControl; begin if Message.Active <> WA_INACTIVE then begin Control := FindControl(Message.ActiveWindow); //他のアプリから[Alt]+[TAB]でアクティブになる時はControl = nilとなる if Control <> nil then begin if Control.Name = 'Form1' then begin Form1.Edit1.Text := 'Form1 成功!!'; end else if Control.Name = 'Form2' then begin Form2.Edit1.Text := 'Form2 成功!!'; end; end; end; end; end. 動作確認環境は,質問された方と多分同じでしょう.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.