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

解決


ahsan  2008-03-24 23:25:34  No: 30240

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

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


KHE00221  2008-03-26 07:34:02  No: 30241

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 19:25:39  No: 30242

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


KHE00221  2008-03-27 06:15:15  No: 30243

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


ahsan  2008-03-27 21:56:41  No: 30244

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加