自由自在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 |