如何在 VB6 应用程序中重用类?
-
05-07-2019 - |
题
首先,由于我使用的是VB6,请将您的建议仅限于应用于VB6的技术。
我有一组彼此相关的控件,如上图所示。它包括几个树视图、一个分割栏、一个列表视图、一个子表单(用户控件)等。
当我单击或更改左侧的树视图节点时,右侧控件将相应地更改其显示,反之亦然。
后台数据保存在 Access 数据库中。
这套数据管理和显示用于多个不同的应用程序。因此,我编写了几个类来实现逻辑,并在我的应用程序中一次又一次地包含这些类模块。
所以我其实是 重复利用 我的课程处于“复制和粘贴”模式。它有效,但有问题。如果我在一个类中进行更改,我必须在多个应用程序中更改它。
这些天我在考虑把它们做成所谓的ActiveX组件。但我不确定应该开发哪种 ActiveX 组件来重用整个体系结构。
简而言之,我想知道 我怎样才能更优雅地重用它 而不仅仅是“复制和粘贴”。以下是对新的“优雅重用”的一些想法或期望,但不仅限于此。
(1) 我希望它看起来像一个具有属性页的 ActiveX 控件,以便我可以在设计时设置它的一些属性。
(2)对于不同的应用,右侧的子窗体可能显示不同的信息,具有不同的控件,可能需要额外的编码和设计。
(3) 另外,我可能需要为不同应用程序的树视图和列表视图编写一些新行为。此要求使得整个表单的整个用户控件不适合。因为MSDN说“对ActiveX控件的引用,永远不应该返回给客户端应用程序。”
解决方案
- 创建ActiveX DLL(非控件)
- 为表单定义一个接口
动态链接库 - 将所有逻辑移至 DLL 中的一个或多个类中 并让例程通过界面与表单交互
- 以表单的形式实现接口
- 应用程序的一次初始化使表单向 ActiveX DLL 注册自身
这将有效地消除不同应用程序之间的复制和粘贴。
例如,对于我的金属切割应用程序,我有一个形状表单、一个形状屏幕类和一堆形状类。shape 类的两个方法是 DrawScreen(具有 ShapeScreen 类型的参数)和 GetValues(也具有 ShapeScreen 类型的参数)。
DrawScreen使用ShapeScreen的方法设置入口屏幕,Shape Screen通过IShapeForm接口设置Form。GetValues 使用 Shape Screen 方法来获取输入的形状值,而形状值又使用 IShapeForm 从表单中获取值。
当我们必须根据客户要求开发不同的形状输入表单时,这种设置被证明是有用的。新表单仅实现了 IShapeForm 接口,软件的其余部分未受影响。
其他提示
也许我应该将每个控件封装到用户控件中,然后创建一个虚拟ActiveX控件(没有可视化界面)来将这些控件组织成一个统一的东西。
看起来你拥有的是视图,域逻辑和数据。我预见的主要问题是第二项,从应用程序到应用程序的外观和逻辑不是静态的。也许你需要的是两个独立的控件?左侧面板和右侧面板。右侧面板可能会实现一些类型的控件数组,因为它们不会是静态的。