子ウィンドウの切り替えを知りたい

解決


ahsan  2008-03-24 14:25:34  No: 30240  IP: 192.*.*.*

いつもお世話になります。

MDIの子ウィンドウが仮に2個有って、
アクティブで無い方の子ウィンドウのタイトルバーを
クリックするとアクティブになりますが、
アクティブになる直前に処理(例えば切り替えますか?とダイアログ表示)
したいのです。
activeFormChangeでは、切り替わった事は、わかりますが
TPageControlのイベントOnChanging のように切り替える直前に
アプリケーション側で検知し、場合によっては切り替えない
ような処理はどのように行えばよいのでしょうか?
よろしくお願い致します。

編集 削除
KHE00221  2008-03-25 22:34:02  No: 30241  IP: 192.*.*.*

Unit1 (MDIForm) で

var
  Form1: TForm1;
  ActiveForm: TForm;

のように設定して

Unit2 (MDIChild) で

implementation

uses
    Unit1;

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);
begin
    if ActiveForm <> Self then
    begin
      if MessageDlg('切り替えますか',mtInformation,[mbYes,mbNo],0) = mrYes then
      begin
        ActiveForm := Self;
      end
      else
      begin
        ActiveForm.SetFocus;
      end;
    end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
    ActiveForm := Self;
end;

編集 削除
ahsan  2008-03-26 10:25:39  No: 30242  IP: 192.*.*.*

KHE00221さんありがとうございます。
早速、コーディング&動作しました。
切り替わった後(FormActiveate->if ActiveForm <> Self)でないと
判定できないのですね。
別の考え方で、現在アクティブな子ウィンドウ以外の
子ウィンドウをアクティブにならないようにしたり、
解除して普通に切り替えが、できるようにしたりする事は、
できないのでしょうか。お願い致します。

編集 削除
KHE00221  2008-03-26 21:15:15  No: 30243  IP: 192.*.*.*

Enabled を False にしておけば切り替えはできなくなるけど?

編集 削除
ahsan  2008-03-27 12:56:41  No: 30244  IP: 192.*.*.*

できました。
KHE00221さん、どうもありがとうございました。

編集 削除