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