首先,由于我使用的是VB6,请将您的建议仅限于应用于VB6的技术。

alt text

我有一组彼此相关的控件,如上图所示。它包括几个树视图、一个分割栏、一个列表视图、一个子表单(用户控件)等。

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

后台数据保存在 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控件(没有可视化界面)来将这些控件组织成一个统一的东西。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top