VB6 来自在一个 MDI 下工作的两个不同项目

问题描述 投票:0回答:1

要求... 我有一个巨大的 VB6 项目,里面有很多表格。一个父 MDI 窗体和所有其他窗体通过不同的菜单操作在其中打开。

我需要拆分这个项目,比如说把主窗体放在那里,把其他组相关的窗体提取到自己的项目中。

让我们以一个新项目为例...... 主要项目:

  • 只有一个 MDI 窗体调用,frmMain with menu
    • 菜单项 1
    • 菜单项 2

prjModule1

  • To have a form frmModule1Main, which needs to be loaded as MDI child of frmMain when menu item 1 is selected

prjModule2

  • To have a form frmModule2Main, which needs to be loaded as MDI child of frmMain when menu item 2 is selected

如何实现,每个项目的项目类型应该是什么?我理解的主要应该是Standard Exe,但是另外两个呢?我需要 exe 还是 dll?

我尝试了以下

标准Exe工程:MainProject,带一个MDI父窗体 DLL 项目 child1:

  • 有一个公开的公开课,和一个表格。
  • 公开了类“ShowForm”中的一个方法
  • 在MainProject中,添加对child1项目的引用
  • 在菜单点击时调用 ShowForm
Private Sub mnuModule1_Click()
    Dim cls As New prjModule1.Class1
    cls.ShowForm
End Sub

这是 ShowForm 子

Public Sub ShowForm()
    Dim localForm As New frmModule1Main
    localForm.Show
End Sub

当我选择 Module1 菜单项时,表单 prjModule1.frmModule1Main 按预期打开。 但不是主 MDI 窗体的子窗体。如果我将 frmModule1Main 的 MDIChild 属性更改为 True。我收到错误消息“没有可加载的 MDI 表单”

我错过了什么,我怎么能告诉子窗体谁是你的 MDI 父级?它已经加载了吗?

forms vb6 mdiparent
1个回答
0
投票

正如评论中指出的那样,您需要将表单转换为 UserControl,并将这些 UserControl 嵌入到 ActiveX Control 类型的项目中。我无法让任何其他组合工作。

代码片段中,frmChild是一个没有控件的MDIChild Form。当您想显示另一个项目中包含的“表单”时,您可以将该“表单”动态添加到 frmChild:

Private Sub ShowForm()
   Dim f As frmChild
   Set f = New frmChild
   Dim uc As UserControl3
   Set uc = f.Controls.Add("Project3.UserControl3", "UC3", f)
   uc.Visible = True
   f.Show
End Sub

© www.soinside.com 2019 - 2024. All rights reserved.