ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

EndDialog で OpenDialog を自動的に閉じる 

更新 : 2009/12/09

 



解説:
EndDialog 関数はモーダルなダイアログを消して、 システムにダイアログの処理を終了させます。通常、OpenDialog などを自動的に消すことはありませんが、必要な場面に出くわさないとも限りません。そんなときのために覚えておいて損のないテクニックです。

この関数はダイアログで使用するので、MessageDlg 関数や ShowMessage 関数などのフォームでは使用できません。

使用例:
以下の例では、OpenDialog を表示させ、5 秒後自動的に消去させています。

Form に Timer と OpenDialog, Button を適当に配置してください。
Timer の Enabled を false に、Interval を 5000 ミリ秒に設定しておきます。

Button1 の OnClick で OpenDialog1 を表示します。そのまま放置しておくと 5 秒後 OpenDialog1 は自動的に閉じられます。

※他に GetLastActivePopup を使う方法もありますので参考にしてください。

//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // Timer に処理を移します。
    Timer1->Enabled = true;
    OpenDialog1->Execute();
}
//-------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Timer1->Enabled = false;

    // GetParent 関数は指定したウィンドウの親ウィンドウハンドルを取得します。
    EndDialog(GetParent(OpenDialog1->Handle), IDCANCEL);// OpenDialog を閉じる
}
//-------------------------------------------------------------------




[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.