现在我使用的是FORM的Visible属性控制其是否显示。
   但是如果子FORM很多的话,一个一个写很费事。
   我发现MDIform有
      ActiveMDIChild属性,指向当前活动的子窗体。此乃TForm   *类型的指针,必要时可强制转换为任意类型的子窗体实例。     
    MDIChildCount属性,用于判断已经创建的子窗体的总数。     
    MDIChildren属性,是一个TForm   *类型的指针数组,指向目前存在的所有的子窗体。结合MDIChildCount属性,可以实现子窗体的遍历。    这样的话就可以通过循环控制。
    我现在不明白的是MDIChildCount属性中已经创建的子窗体的总数这句话。如果MDIFORM只LOAD了一个子窗体,那这个数字就是1吗?还是全部子窗体的个数?   我的代码中:
Private Sub MDIForm_Load()
    Form1.Show
MsgBox Str(MDIChildCount), 1 + 16 + 256 + 0, "MDIChildCount" 
End Sub
运行结果为什么总是0呢?
大家有没有做过这方面的,指点一下啊,谢谢了

解决方案 »

  1.   

    你得me.MDIChildCount或者MDIForm.MDIChildCount吧,要不然这样它只是一个变量啊,你又未声明,当然是0
      

  2.   


    我写成MDIForm1.MDIChildCount,提示我”未找到方法或数据成员“
      

  3.   

    声明一变量n,把MDIForm.MDIChildCount赋给n
    MsgBox Str(n), 1 + 16 + 256 + 0, "MDIChildCount"
      

  4.   

    VB MDI子窗体切换Dim frm As Form
    For Each frm In Forms
    If frm.Name = "你的窗体名" Then
    你的窗体名.SetFocus
    Exit Sub
    End If
    Next
    你的窗体名.Show
      

  5.   

    为什么我的编辑器代码自动提示,没有MDIChildCount这个属性?
    我写成MDIForm1.MDIChildCount,提示我“未找到方法或数据成员”
    写成MDIChildCount,提示“子程序或函数未定义”
      

  6.   

    我的MDIForm为什么没有ActiveMDIChild,MDIChildCount,MDIChildren这三个属性?我用的是VB6.0企业版啊。难道版本不对?
      

  7.   

    给你一段我本人自己开发时写的一个函数:Function IsLoadFormII(uFrmName As String) As Boolean
    '//判断窗体是否加载
    Dim uFrm As Form
        For Each uFrm In Forms
       ' MsgBox ufrm.Name
            If uFrm.Name = uFrmName Then
                uFrm.ZOrder 0
                If uFrm.WindowState = 1 Then uFrm.WindowState = 0
                IsLoadFormII = True
            End If
        Next
    End Function
      

  8.   

    解决了,我直接关闭ACTIVEFORM,再打开另一个FORM
      

  9.   

    子窗体的激活修改调试了“虚心学习的代码”
    现推给有用到的人
    Private Sub Tvwdep_nodeClick(ByVal node As node)
    Dim fuz As Form
    Set fuz = Form1  'form1 为子窗体的模板,也可不设置
    Dim nodd As String
    nodd = nod & "-" & node ‘获得要激活子窗体的 Caption 或name
    For Each fuz In Forms
    If fuz.Caption Like nodd Then
    fuz.SetFocus
    'fuz.Show
    Exit Sub
    End If
    Next
    End Sub