如何在VB6应用程序中重用类?

如何在VB6应用程序中重用类?,vb6,activex,components,code-reuse,reusability,Vb6,Activex,Components,Code Reuse,Reusability,首先,由于我正在使用VB6,请将您的建议局限于应用于VB6的技术 我有一组相互关联的控件,如上图所示。它包括几个TreeView、一个拆分栏、一个listview、一个子表单(一个usercontrol)等等 当我单击或更改左侧的treeview节点时,右侧控件将相应地更改其显示,反之亦然 幕后的数据保存在Access数据库中 这组数据管理和显示用于几个不同的应用程序。因此,我编写了几个类来实现逻辑,并在我的应用程序中一次又一次地包含这些类和模块 所以我实际上是在“复制粘贴”模式下重用我的类。

首先,由于我正在使用VB6,请将您的建议局限于应用于VB6的技术

我有一组相互关联的控件,如上图所示。它包括几个TreeView、一个拆分栏、一个listview、一个子表单(一个usercontrol)等等

当我单击或更改左侧的treeview节点时,右侧控件将相应地更改其显示,反之亦然

幕后的数据保存在Access数据库中

这组数据管理和显示用于几个不同的应用程序。因此,我编写了几个类来实现逻辑,并在我的应用程序中一次又一次地包含这些类和模块

所以我实际上是在“复制粘贴”模式下重用我的类。这是可行的,但也有问题。如果我在一个类中进行更改,我必须在几个应用程序中进行更改

这些天来,我正在考虑将它们制作成所谓的ActiveX组件。但是我不确定应该开发哪种ActiveX组件来重用整个体系结构

简而言之,我想知道如何才能更优雅地重用它,而不仅仅是“复制粘贴”。下面是对新的“优雅重用”的一些想法或期望,但不限于此

(1) 我希望它看起来像一个ActiveX控件,它有一个属性页,这样我可以在设计时设置它的一些属性

(2) 对于不同的应用程序,右侧的子窗体可能显示不同的信息,具有不同的控件,并且可能需要额外的编码和设计


(3) 此外,我可能需要为不同应用程序的treeview和listview编写一些新行为。这个要求使得整个表单的整个usercontrol不适合。因为MSDN说“对ActiveX控件的引用永远不应该返回到客户端应用程序。”

也许我应该将每个控件封装到一个用户控件中,然后制作一个虚拟ActiveX控件(无可视界面)来将这些控件组织成一个统一的东西。

  • 创建ActiveX DLL(非控件)

  • 动态链接库
  • 将所有逻辑移到DLL中的一个或多个类中 并让例程通过接口与表单交互
  • 在表单中实现接口
  • 应用程序的一次初始化将表单本身注册到ActiveX DLL
这将有效地消除不同应用之间的复制和粘贴

例如,对于我的金属切削应用程序,我有一个形状窗体、一个形状屏幕类和一组形状类。形状类的两个方法是DrawScreen,它的参数类型为ShapeScreen,GetValues也有一个参数类型为ShapeScreen

DrawScreen使用ShapeScreen方法设置输入屏幕,Shape screen通过IShapeForm界面设置表单。GetValues使用Shape screen方法获取输入的形状值,然后使用IShapeForm从表单获取值


当我们必须开发不同的形状输入表单以响应客户请求时,这个设置被证明是有用的。新表单只是实现了IShapeForm界面,软件的其余部分没有被触及。

看起来您拥有的是一个视图、域逻辑和数据。我预见的主要问题是第二项,它不是静态的应用程序之间的逻辑和逻辑。也许你需要的是两个独立的控件?左面板和右面板。右面板可能会实现某种类型的控件数组,因为它们不会是静态的。

听起来很“优雅”“,谢谢。因为我不太熟悉ActiveX dll和接口的概念。请您进一步解释一下好吗?ShapeScreen是dll中的一个类,它有一个名为IShapeForm的接口。形状类在哪里?它们也在您的dll中吗?简言之,我就是搞不清楚如何“在表单中实现接口"?它与多态性有关吗?请给我几行代码来说明整个体系结构好吗?或者你的意思是在你的dll中有一个名为IShapeForm的类?当你的dll中的所有类都需要与IShapeForm交互时,它们都会与真实的表单交互。当我使用dll时,我会向是的,我想这就是你的意思。请你给出一些peudo代码来说明以下两个任务好吗?(1)“通过IShapeForm接口设置窗体的形状屏幕。”(2)“使用IShapeForm从窗体获取值。”如果你用谷歌搜索这个“vb6 activex控件教程”,可能会有所帮助。