1.表示しているフォームを一度に閉じる |
1.閉じる又は×をクリックしたら開いているフォームをすべて閉じる 2.マイクロソフト推奨のやり方 3.ゆう(U)さんに投稿頂いた分 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.閉じる又は×をクリックしたら開いているフォームをすべて閉じる |
次のプロシージャを標準モジュールに作成する Public Sub sAllEnd() Dim myObject As Object For Each myObject In Forms Unload myObject Set myObject = Nothing Next End Sub 各フォームの Unload イベント からプロシージャを呼ぶ Private Sub Form_Unload(Cancel As Integer) Call sAllEnd Unload Me End Sub 又はForm1だけに書く Private Sub Form_Unload(Cancel As Integer) Dim myObject As Object For Each myObject In Forms Unload myObject Set myObject = Nothing Next Unload Me End Sub |
2.マイクロソフト推奨のやり方 |
マイクロソフト推奨のやり方(FAQ集より) (029) Private Sub Form_Unload(Cancel As Integer) Dim i As Integer While Forms.Count > 1 '自分以外のフォームを探します i = 2 While Forms(i) Is Me i = i + 1 Wend Unload Forms(i) Wend '自分自身もアンロードし、アプリケーションは終了します Unload Me 'End 消しておく(使用しない方が良い) End Sub |
3.ゆう(U)さんに投稿頂いた分 |
ゆう(U)さんに投稿頂いた分 (029) '========================================================== '全てのフォームを解放する sFormAllUnload '========================================================== ' Call sFormAllUnload ' 引数 なし '---------------------------------------------------------- 'MDI親・子フォームのUnload順を考慮しています。 'しかしSDIフォームの親子は考慮していないので、その辺は '不安ですが・・・(frmXXX.Show vbModeless, Me などの場合 '親が消されるとUnloadMode=5で子もUnloadされます) '(Forms.Count - 1 To 0)でUnloadの方が良いかも? '---------------------------------------------------------- Public Sub sFormAllUnload() Dim myForm As Form ' フォームの解放 For Each myForm In Forms If Not (TypeOf myForm Is MDIForm) Then Unload myForm End If Next myForm ' MDIフォームの解放(MDI親フォーム以外はないはず) For Each myForm In Forms Unload myForm Next myForm End Sub |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
表示しているフォームを一度に閉じる 全てのフォームを解放する |