|
|
||||
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 を閉じる } //------------------------------------------------------------------- |
|