0

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

替代文字

如上图所示,我有一组相互关联的控件。它包括几个树视图、一个拆分栏、一个列表视图、一个子窗体(一个用户控件)等。

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

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

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

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

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

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

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

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

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

4

3 回答 3

2
  • 创建一个 ActiveX DLL(不是控件)

  • 在DLL中为表单定义一个接口
  • 将所有逻辑移动到 DLL 中的一个或多个类中,并让例程通过接口与表单交互
  • 在表单中实现接口
  • 应用程序的一项初始化使表单本身向 ActiveX DLL 注册

这将有效地消除不同应用程序之间的复制和粘贴。

例如,对于我的金属切割应用程序,我有一个 Shape Form、一个 Shape Screen 类和一堆 shape 类。形状类的两个方法是具有 ShapeScreen 类型参数的 DrawScreen 和也具有 ShapeScreen 类型参数的 GetValues。

DrawScreen 使用ShapeScreen 的方法设置入口屏幕,Shape Screen 通过IShapeForm 接口设置Form。GetValues 使用 Shape Screen 方法来获取输入的形状值,然后使用 IShapeForm 从表单中获取值。

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

于 2009-07-30T13:01:37.917 回答
0

也许我应该把每个控件封装成一个用户控件,然后做一个虚拟的ActiveX控件(没有可视化界面)把这些控件组织成一个统一的东西。

于 2009-07-30T11:00:35.457 回答
0

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

于 2009-07-31T04:25:31.400 回答