Frage

Erste von alle, denn ich bin mit VB6, bitte beschränken Sie Ihre freundlichen Vorschläge, um Techniken zu VB6.

alt text

Ich habe eine Reihe von Kontrollen im Zusammenhang zu einander, wie die obige Abbildung zeigt.Es enthält verschiedene treeviews, einer split bar, einer listview, einem Unterformular( ein usercontrol), und etc.

Wenn ich auf oder ändern Sie das treeview-Knoten in der linken, die rechten Steuerelemente ändern wird display entsprechend, und Umgekehrt.

Die Daten hinter der Szene werden in einer Access-Datenbank.

Dieser Satz von Daten-management und die display ist verwendet in viele verschiedene Anwendungen.Also schrieb ich mehrere Klassen implementieren die Logik, und gehören diese Klassen Module wieder und wieder in meine Anwendungen.

So bin ich eigentlich WIEDERVERWENDUNG meine Klassen in einem "copy and paste" - Modus.Es funktioniert, aber es hat Probleme.Wenn ich eine änderung in einer Klasse, die ich ändern müssen es in verschiedenen Anwendungen.

In diesen Tagen denke ich daran, Sie in die so genannte ActiveX-Komponenten.Aber ich bin nicht sicher, welche Art von ActiveX-Komponenten sollte ich entwickeln zu Wiederverwendung die gesamte Architektur.

Kurz gesagt, ich möchte wissen, wie kann ich es wiederverwenden, mehr anmutig als nur "copy and paste".Nachfolgend finden Sie einige Ideen oder Erwartung des neuen "anmutig REUSE", aber nicht nur auf Sie.

(1) ich hoffe, es sieht aus wie ein ActiveX-Steuerelement hat eine Eigenschaft Seite, so dass ich einige Eigenschaften, die es während der design-Zeit.

(2) Für verschiedene Anwendungen, das Unterformular in das Recht kann display verschiedene Informationen und hat verschiedene Steuerelemente und müssen möglicherweise zusätzliche Codierung und Gestaltung.

(3) Auch ich muss code, der einige der neuen Verhaltensweisen, die für das treeview-und listview-für verschiedene Anwendungen.Dieser Anforderung eine ganze usercontrol für das gesamte Formular nicht geeignet.da MSDN sagte: “Verweise auf ActiveX-Steuerelemente,sollten niemals zurückgegeben werden, um client-Anwendungen。"

War es hilfreich?

Lösung

  • Erstellen einer ActiveX-DLL (keine Kontrolle)
  • Definieren Sie eine Schnittstelle für die form, in
    die DLL
  • Verschieben Sie alle Ihre Logik in eine oder mehrere Klassen in der DLL und die Routinen, die die Interaktion mit dem Formular über die Schnittstelle
  • Implementieren Sie die Schnittstelle in der form
  • Eine Initialisierung der app haben die form registrieren Sie sich mit der ActiveX-DLL

Dies wird effektiv beseitigt kopieren und einfügen zwischen den verschiedenen apps.

Zum Beispiel für meine Metall-schneiden-Anwendung habe ich eine Form-Form, eine Form, die Screen-Klasse, und ein paar Form-Klassen.Zwei der Methoden der Form-Klasse sind DrawScreen die einen Parameter des Typs ShapeScreen, und GetValues das hat auch einen parameter vom Typ ShapeScreen.

DrawScreen nutzt die Methode der ShapeScreen, um den setup-Eingabe-Bildschirm und Form, Bildschirm setup die Form durch die IShapeForm-Schnittstelle.Der GetValues verwendet Form-Bildschirm Methoden, um die eingegebenen Form Werte, die im Wechsel verwendet die IShapeForm, um die Werte aus dem Formular.

Dieses setup als nützlich erwiesen, wenn wir auf die Entwicklung verschiedener Form Formblätter in Reaktion auf Kunden Anfragen.Die neue form nur implementiert, die IShapeForm Schnittstelle und der rest der software war unberührt.

Andere Tipps

Vielleicht jede der Kontrollen zu einem Benutzersteuer einzukapseln ich soll, und dann ein virtuelles ActiveX-Steuerelement machen (keine visuelle Interface), um diese Kontrollen in eine vereinte Sache zu organisieren.

Es sieht aus wie das, was Sie haben einen Blick, Domain-Logik und Daten. Ihr Hauptproblem sehe ich ist Punkt zwei, es in Aussehen und Logik von App zu App nicht statisch ist. Vielleicht, was Sie brauchen, sind zwei separate Kontrollen? Linke Seite und rechte Fenster. Das rechte Feld wahrscheinlich wird eine Art Reihe von Kontrollen implementieren, da sie nicht statisch sein werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top