自由自在MDI子フォーム

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります

すいません。バグがありました、修正しました(99/11/30)




Option Explicit

'この方法を使えば、アクティブでない子フォームも操ることができます
'子フォームのかたくるしさが、これでなくります

Private Sub mnuFile_AllActive_Click()
    Dim j As Integer
    
    'すべてのフォームをアクティブにします
    For j = 1 To colForm.Count
        colForm.Item(j).SetFocus
        DoEvents
    Next

End Sub

Private Sub mnuFile_AllClose_Click()
    Dim j As Integer
    
    'すべての子フォームを閉じます
    For j = 1 To colForm.Count
        Unload colForm.Item(1)
        DoEvents
    Next
    
    'コレクション内のデータをすべて削除します
    For j = 1 To colForm.Count
        colForm.Remove 1
    Next
    
End Sub

Private Sub mnuFile_New_Click()
    Dim frm As Form1
    Static Cnt As Integer
    
    'インスタンスの生成をします
    Set frm = New Form1
    
    '子フォームを新規作成します
    Cnt = Cnt + 1
    frm.Caption = "無題" & Cnt
    frm.Show
    
    'コレクションに子フォームオブジェクトを追加します
    'keyに数字を入れて操るという方法もあります
    colForm.Add frm, frm.Caption
    
End Sub

Private Sub mnuFile_Select_Click()
    Dim str As String
    
    'メニューからではなくコンボボックスから
    'アクティブにするという方法もあります
    
    'エラーが起きないようにします
    On Error Resume Next
    
    If colForm.Count = 0 Then
        '子フォームがなかったら警告します
        MsgBox "子フォームがありません。" & vbCrLf _
                & "子フォームを新規作成してください", vbCritical
    Else
        'indexを指定してフォームをアクティブにします
        str = InputBox("アクティブにしたい子フォームのタイトルを指定してください。")
        colForm.Item(str).SetFocus
    End If
End Sub



<戻る

Sample46.lzh


http://www.vector.co.jp/authors/VA015521/