编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > VB6 > 界面设计 > VB6 界面设计 MDI窗体与其子窗体的交互

VB6 界面设计 MDI窗体与其子窗体的交互

MDI窗体与其子窗体的交互_界面设计_VB6


(1)活动子窗体和活动控件的判断

访问MDI窗体的两个属性:

ActiveForm 表示具有焦点或者最后被激活的子窗体
ActiveControl 表示活动子窗体上具有焦点的控件。

例如:将父窗体MDIForm1的活动子窗体中的活动控件(文本框)中所选文本复制到剪贴板上:

Clipboard.SetText MDIForm1.ActiveForm.ActiveControl.SelText

注意:当访问ActiveForm属性时,至少应有一个MDI子窗体被加载或可见,否则会返回错误。


在代码中指定当前窗体的另一种用法使用Me关键字。用Me关键字来引用当前其代码正在运行的窗体。当需要把当前窗体实例的引用参数传递给过程时,这个关键字很有用,例如:Unload Me.

Option Explicit
Private Sub mnuCopy_Click() '复制菜单命令
    Clipboard.SetText(MDIForm1.ActiveForm.ActiveControl.SelText)
End Sub

'要使建立的窗体标题列在窗口菜单之下,只需在建立窗口菜单时选中显示窗口列表选项即可
Private Sub mnuAddForm_Click()
    'NewForm 是用程序生成的子窗体实例,它与Form1 子窗体具有相同的属性、控件和代码
    '多次调用,则产生多个Form1的实例。如设启动窗体为MDIForm1则模板窗体不显示
    'Form1.Show '为使模板窗体form1显示在MDIForm1中
    Static No%
    Dim NewForm As New Form1 '定义并建立一个NewForm窗体变量
    No = No + 1
    NewForm.Caption = "No" & No '新窗体的标题
    NewForm.Show() '显示新窗体。
    '当MDIForm1.AutoShowChild=True时没有这一句也照样显示子窗体
End Sub

Private Sub mnuArrangeIcos_Click() 'MDIForm1内的子窗体图标排列
    MDIForm1.Arrange(vbArrangeIcons)
End Sub

Private Sub mnuCut_Click()  '剪切菜单命令
    Clipboard.SetText(MDIForm1.ActiveForm.ActiveControl.SelText)
    MDIForm1.ActiveForm.ActiveControl.SelText = ""
End Sub

Private Sub mnuHorizontal_Click() 'MDIForm1内的子窗体水平排列
    MDIForm1.Arrange(vbTileHorizontal)
End Sub
Private Sub mnuCascade_Click() 'MDIForm1内的子窗体层叠排列
    MDIForm1.Arrange(vbCascade)
End Sub

Private Sub mnuPast_Click()  '粘贴菜单命令
    MDIForm1.ActiveForm.ActiveControl.Text = Left(MDIForm1.ActiveForm.ActiveControl.Text, MDIForm1.ActiveForm.ActiveControl.SelStart) _
      + Clipboard.GetText() + Mid(MDIForm1.ActiveForm.ActiveControl.Text, MDIForm1.ActiveForm.ActiveControl.SelStart + 1)
End Sub

Private Sub mnuVertical_Click() 'MDIForm1内的子窗体垂直排列
    MDIForm1.Arrange(vbTileVertical)
End Sub



(2)显示MDI窗体及其子窗体

显示任何窗体的方法都是show方法,同时还有下述特点:

1 加载子窗体时,其父窗体会自动加载并显示;反之则无。
2 MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体(缺省值为True即只要加载子窗体就会在父窗体中显示出来),而MDI子窗体没有AutoShowChildren属性。
3 需要维护子窗体的状态信息
4 要求用QueryUnload卸载MDI窗体

当MDI父窗口要关闭之前,它会对每一个子窗体发出QueryUnload事件,因此每个子窗体可以将“该如何处理的语句”放在这个事件中,这样可以避免因MDI窗体的关闭而引起丢失子窗口的重要数据。



编程学习 VB6 界面设计 MDI窗体与其子窗体的交互 转载请保留此行.谢谢.

VB6